shell学习笔记(二)

来源:互联网 发布:淘宝卖家版注册 编辑:程序博客网 时间:2024/05/01 17:50


来一下快速排序吧,把let和eval 去掉, 用全局数组,可读性好多了。


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



原创粉丝点击