快速排序算法

来源:互联网 发布:caffe alexnet 编辑:程序博客网 时间:2024/05/01 03:11

 int a[10];

void setdata(int left,int right){

      int i,j,temp,t;

     temp= a[left];//temp中存的就是基准数 

    i=left;

    j=right;

   

    while (left>right) {

        return;

    }

    while (i!=j) {

        while (a[j]>=temp && i<j) {//从右像左找

            j--;

        }

        while (a[i]<=temp && i<j) {//再从左向右找

            i++;

        }

        if (i<j) {//没有相遇时交换位置

            t=a[i];

            a[i]=a[j];

            a[j]=t;

        }

    }

    a[left]=a[i];//将基数归位,相遇时

    a[i]=temp;

    setdata(left, i-1);//继续处理左边的

    setdata(i+1, right);//继续处理右边的

}

int main(int argc,const char * argv[]) {

    @autoreleasepool {

         a[1]=12;a[2]=21;a[3]=5;a[4]=12;a[5]=9;a[6]=36;a[7]=6;a[0]=45;//

        setdata(0,8);//调用排序方法

        for (int i=0; i<8; i++) {//逐个打印出来

            NSLog(@"%d",a[i]);

        }

        

    }

    return0;

}

0 0