您的位置:首页 > 其它

快速排序算法

2015-10-20 18:00 267 查看
 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]);
        }
        
    }
    return
0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: