日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux中shell编写数组排序,linux bash shell实现对数组快速排序(升序)

發布時間:2023/12/10 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中shell编写数组排序,linux bash shell实现对数组快速排序(升序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2011年12月19日,參考網上用C語言實現的快速排序,經過一番修改后,用shell(我的測試環境為centos5的bash-v3.x)實現了相同功能:對數組進行升序排序。

注:如果代碼框里的代碼復制出來后顯示異常,就麻煩下載附件chris.zip(已將chris-qsort.sh和chris-algo.sh壓縮打包為chris.zip)

1. shell函數形式(已將其放在附件里,文件名為:chris-qsort.sh。由于沒法上傳.sh腳本,故壓縮打包了一下,文件名為:chris.zip):

Quick_Sort(){

#SortNumeric-arrayinASCorder,?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

localarray=${3}

evallocalpivot=\$\{${array}[${1}]\}

locallow=${1}

localhigh=${2}

[?${1}?-ge?${2}?]?&&return

while?[?${low}?-lt?${high}?];?do

while?[?${low}?-lt?${high}?-a?${pivot}?-le?$(eval?echo?\$\{${array}[${high}]\})?];?do

let?high--

done

if?[?${pivot}?-gt?$(eval?echo?\$\{${array}[${high}]\})?];then

eval?${array}[${low}]=\$\{${array}[${high}]\}

eval?${array}[${high}]=${pivot}

let?low++

fi

while?[?${low}?-lt?${high}?-a?${pivot}?-ge?$(eval?echo?\$\{${array}[${low}]\})?];?do

let?low++

done

if?[?${pivot}?-lt?$(eval?echo?\$\{${array}[${low}]\})?];then

eval?${array}[${high}]=\$\{${array}[${low}]\}

eval?${array}[${low}]=${pivot}

let?high--

fi

done

#Executethe?Quick_Sortfunctionrecursively

Quick_Sort?${1}?$[${low}-1]?${array}

Quick_Sort?$[${low}+1]?${2}?${array}

unset?array?pivot?low?high

}

2. shell腳本形式,進行簡單測試(已將其放在附件里,文件名為chris-algo.sh。由于沒法上傳.sh腳本,故壓縮打包了一下,文件名為:chris.zip)。

#!/bin/bash

##################################################

##?Author?????:??Chris

##?CreateDate:??2011-12-19

##?ModifyDate:??2012-05-14

##?Realize?common?algorithms?inbash-v3.x

##?Note:?Every?functionrepresents?an?algorithm.

##################################################

#Normal?Quick-Sort?algorithm

Quick_Sort(){

#Sort?Numeric-arrayinASCorder,?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

localarray=${3}

eval?localpivot=\$\{${array}[${1}]\}

locallow=${1}

localhigh=${2}

[?${1}?-ge?${2}?]?&&?return

while?[?${low}?-lt?${high}?];?do

while?[?${low}?-lt?${high}?-a?${pivot}?-le?$(eval?echo?\$\{${array}[${high}]\})?];?do

let?high--

done

if?[?${pivot}?-gt?$(eval?echo?\$\{${array}[${high}]\})?];?then

eval?${array}[${low}]=\$\{${array}[${high}]\}

eval?${array}[${high}]=${pivot}

let?low++

fi

while?[?${low}?-lt?${high}?-a?${pivot}?-ge?$(eval?echo?\$\{${array}[${low}]\})?];?do

let?low++

done

if?[?${pivot}?-lt?$(eval?echo?\$\{${array}[${low}]\})?];?then

eval?${array}[${high}]=\$\{${array}[${low}]\}

eval?${array}[${low}]=${pivot}

let?high--

fi

done

#Executethe?Quick_Sortfunctionrecursively

Quick_Sort?${1}?$[${low}-1]?${array}

Quick_Sort?$[${low}+1]?${2}?${array}

unset?array?pivot?low?high

}

main(){

read-ep"Input?Numeric:?"numeric

size=$(echo?${numeric}?|?awk'{print?NF}')

#Define?array

t_array=(${numeric})

#Outputthe?original?array

for((i=0;i

printf?"%d?"${t_array[${i}]}

done

printf?"\n"

#Using?Quick_Sort?functiontosort?t_array

size_1=$[${size}?-?1]

Quick_Sort?0?${size_1}?t_array

#Outputthe?sorted?array

for((i=0;i

printf?"%d?"${t_array[${i}]}

done

printf?"\n"

}

main

輸出如下:

[root@localhost algorithms]# ./chris-algo.sh

49 38 65 97 76 13 27 9 2 1

1 2 9 13 27 38 49 65 76 97

分享!

總結

以上是生活随笔為你收集整理的linux中shell编写数组排序,linux bash shell实现对数组快速排序(升序)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。