簡體   English   中英

打印排序數組中的元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM