shell脚本编程(快速排序)

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
    #!/bin/bash  
    #shell脚本编程之快速排序的实现(以最右边为元点的思想)  
    a=(8 5 10 3 2 93 4 1 2 3 40 9 61 8 6 29)  
    #a=(0  0  0  0  1  2  3  3  4  4  8  28  30495  921  43716)  
    temp=  
    buff=  
      
    #交换函数  
    swap()  
    {  
        buff=${a[$1]}  
        a[$1]=${a[$2]}  
        a[$2]=$buff  
    }  
      
    fun()  
    {  
        i=$(($1-1))  
        j=$1  
        temp=${a[$2]}  
        if test $1 -ge $2 ;then  
            return 2   
        fi  
            while [ $j -le $2 ];do  
                [ $j -lt $2 ] && while [[ ${a[$j]} -gt $temp ]] ;do   
                 j=$(($j+1))  
                done  
                i=$(($i+1))  
                swap $i $j    
                j=$(($j+1))  
            done  
         fun 0 $(($i-1))  
         fun $(($i+2)) $2  
    }  
    fun 0 15  
    for((i=0;i<16;i++))  
    {  
        echo -n ${a[$i]} " "  
    }  
    echo  
    exit 0  

下面是C++快速排序的对照代码

    #include <iostream>  
    using namespace std;  
      
    void swap(int *a,int *b)  
    {  
        int temp = *a;  
        *a = *b;  
        *b = temp;  
    }  
    void Grial(int a[],int x,int y)  
    {  
        int i=x-1;  
        int j=x;  
        if(x>=y)return;  
        int temp = a[y];  
        while(j<=y)  
        {  
            while(j<y&&a[j]>a[y])  
                j++;  
            i++;  
            swap(&a[i],&a[j]);  
            j++;      
        }  
        Grial(a,0,i-1);  
        Grial(a,i+1,y);  
    }  
    int main()  
    {  
        int a[]={4,3,921,30495,28,43716,3,4,0,0,2,0,0,1,8,5};  
        Grial(a,0,14);  
        for(int i=0;i<15;i++)  
        {     
            cout<<a[i]<<"  ";  
        }  
        cout<<endl;  
    }  


标签: swap 代码 脚本

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:操作Access数据库的C#封装类

下一篇:java解压缩文件代码