代码如下:
#!/bin/bash function shellsort() { let size=$# a=($@) echo "原序列为:" ${a[@]} let gap=$size while [ $gap -gt 1 ] do let gap=gap/3+1 #echo "gap=" $gap for(( i=gap; i<size; ++i)) do # let key=a[i] for((j=i-gap;j>=0;j=j-gap)) do if [ ${a[$j]} -gt ${a[$j+$gap]} ];then let temp=a[j] let a[j]=a[j+gap] let a[j+gap]=temp fi done done done echo "排序后的序列:" ${a[@]} } size=$# if [ $size = 0 ];then echo "请在命令后输入数组,格式如下" echo "./filename 1 2 3 4" else shellsort $@ fi
结果如下: