[英]Print an element from a sorted array
我編寫了一個程序來對數組進行排序並打印未排序數組和排序數組匹配的元素。 從理論上講,這應該有效,但事實並非如此。 由於某種原因,排序數組中的所有元素都將它們組合在一起,並且 output 是 1 的數組元素。
#!/bin/bash
arr=(6 2 15 90 9 1 4 30 1 3)
function sort(){
local array=($@) max=$(($# - 1))
while ((max > 0))
do
local i=0
while ((i < max)); do
if [ ${array[$i]} \> ${array[$((i + 1))]} ]
then
local t=${array[$i]}
array[$i]=${array[$((i + 1))]}
array[$((i + 1))]=$t
fi
((i++))
done
((max--))
done
echo ${array[@]}
}
arr_sort=($(sort ${arr[@]}))
for ((j=0; j<(( ${#arr[@]} -1 )); j++)); do
for ((k=0; k<(( ${#arr[@]} -1 )); k++)); do
if (( ${arr[j]:-0} == ${arr_sort[k]:-0} )); then
echo ${arr[j]}
break
fi
done
嘗試這個:
#!/bin/bash
arr=(6 2 15 90 9 1 4 30 1 3)
arr_sort=( $(echo ${arr[@]} | tr ' ' '\n' | sort -n) )
for ((j=0; j<${#arr[@]}; j++)); do
if (( ${arr[i]} == ${arr_sort[i]} )); then
echo "Match ${arr[j]} at position $j (starting from 0)"
fi
done
由於未排序的數組之間沒有匹配
6 2 15 90 9 1 4 30 1 3
和排序的
1 1 2 3 4 6 9 15 30 90
在您給出的示例中,您將沒有 output。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.