Отобразите сортированный массив

Как я создаю функцию ("sortarr"), который берет параметр массива и возвращает сортированный массив?

Сценарий оболочки

echo "Original Numbers in array:"
for (( i = 0; i <= 4; i++ ))
do
  echo ${nos[$i]}
done
4
задан 12 December 2016 в 19:56

2 ответа

Создайте функцию под названием Вид,
, цикл через список,
получают входной параметр функции,
, элемент списка эха,
передают вывод цикла виду.
Хранилище вставило новый список, названный sortedlist.

Sort()
  {
    for item in $@; 
      do 
        echo $item; 
      done | 
    sort
   }

list=( Item3 Item1 Item2 )

sortedlist=$(Sort ${list[@]})

echo ${sortedlist[@]}
-1
ответ дан 1 December 2019 в 09:45

Вы не делаете. Вы используете sort:

$ echo ${array[@]}
1 8 14 -4 123 12

$ printf '%s\n' "${array[@]}" | sort -n
-4
1
8
12
14
123

И сделать это функцией:

mysort(){
    printf '%s\n' "$@" | sort -n
}
array=(1 8 14 -4 123 12)
mysort "${array[@]}"

Если Вы действительно, действительно хотите, можно попытаться реализовать алгоритм сортировки в ударе. Могло бы быть более просто просто поразить Вашу голову несколько раз против стены вместо этого все же. Вы действительно не хотите писать такую вещь на языке оболочки. Однако, если Вы настаиваете, Вы могли бы использовать что-то вроде этого (повторно реализованный в ударе от одного из примеров здесь):

mysort(){
    for((i=${#array[@]}-1;i>=0; i--)); do
        for((j=1;j<=$i; j++)); do
            if [[ ${array[j-1]} -gt ${array[j]} ]]; then
                temp="${array[j-1]}"
                array[j-1]="${array[j]}"
                array[j]="$temp"
            fi
        done
    done
}
declare -a array=(1 8 14 -4 123 12)
mysort $array
printf '%s\n' "${array[@]}"

Серьезно, хотя, не делайте, я повторяю не, пытаюсь сделать любую серьезную вычислительную задачу в оболочке. Существуют лучшие инструменты для него. Любая половина путем достойный язык сценариев, например, будет уже иметь методы, которые позволяют Вам вид. Например:

  • Perl

    $ perl -le '@array=(1,8,14,-4,123,12); print join " ", sort @array'
    -4 1 12 123 14 8
    
  • Python

    $ python -c 'array = [1,8,14,-4,123,12]; array.sort(); print(array)'
    [-4, 1, 8, 12, 14, 123]
    
5
ответ дан 1 December 2019 в 09:45

Другие вопросы по тегам:

Похожие вопросы: