shell学习笔记(二)
http://cyent.blog.51cto.com/905592/745659
http://www.cnblogs.com/skyaspnet/archive/2010/11/03/1868298.html
#Normal Quick-Sort algorithm
Quick_Sort(){
#Sort Numeric-array in ASC order, using normal Quick-Sort algorithm.
#C code: http://www.cnblogs.com/skyaspnet/archive/2010/11/03/1868298.html
#Usage: Quick_Sort lowest_index highest_index array_name
#e.g., Quick_Sort 0 9 array1
#e.g., Quick_Sort 1 3 array2
local pivot=${t_array[${1}]}
local low=${1}
local high=${2}
[ ${1} -ge ${2} ] && return
while (( low < high )); do
local pivot=${t_array[${1}]}
local low=${1}
local high=${2}
[ ${1} -ge ${2} ] && return
while (( low < high )); do
while (( low < high )) && [ ${pivot} -le ${t_array[${high}]} ]; do
((high--))
done
if [ ${pivot} -gt ${t_array[${high}]} ]; then
t_array[${low}]=${t_array[${high}]}
t_array[${high}]=${pivot}
((low++))
fi
while (( low < high )) && [ ${pivot} -ge ${t_array[${low}]} ]; do
((low++))
done
if [ ${pivot} -lt ${t_array[${low}]}) ]; then
t_array[${high}]=${t_array[${low}]}
t_array[${low}]=${pivot}
((high--))
fi
done
#Execute the Quick_Sort function recursively
Quick_Sort ${1} $[${low}-1] t_array
Quick_Sort $[${low}+1] ${2} t_array
unset pivot low high
}
main(){
read -ep "Input Numeric: " numeric
t_array=(${numeric})
size=${#t_array[@]}
#Output the original array
for((i=0;i<size;i++)); do
printf "%d " ${t_array[${i}]}
done
printf "\n"
Quick_Sort 0 $((size-1)) t_array
#Output the sorted array
for((i=0;i<size;i++)); do
printf "%d " ${t_array[${i}]}
done
printf "\n"
}
main