32 lines
564 B
Bash
Executable File
32 lines
564 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# quicksorts positional arguments
|
|
# return is in array qsort_ret
|
|
qsort() {
|
|
local pivot i smaller=() larger=()
|
|
qsort_ret=()
|
|
(($#==0)) && return 0
|
|
pivot=$1
|
|
shift
|
|
for i; do
|
|
if [[ $i < $pivot ]]; then
|
|
smaller+=( "$i" )
|
|
else
|
|
larger+=( "$i" )
|
|
fi
|
|
done
|
|
qsort "${smaller[@]}"
|
|
smaller=( "${qsort_ret[@]}" )
|
|
qsort "${larger[@]}"
|
|
larger=( "${qsort_ret[@]}" )
|
|
qsort_ret=( "${smaller[@]}" "$pivot" "${larger[@]}" )
|
|
}
|
|
|
|
array=(a c b "f f" 3 5)
|
|
|
|
qsort "${array[@]}"
|
|
|
|
declare -p qsort_ret
|
|
|
|
exit 0
|