您的位置:首页 > 其它

【刷题之路】快速排序

2016-05-30 21:02 288 查看
经典算法

class QuickSort {

public:

    int* quickSort(int* A, int n) {

        // write code here

        quicks(A,0,n-1);

        return A;

    }

    void quicks(int* a,int left,int right){

        int i,j,temp;

        if(left<right){

            i=left;

            j=right;

            temp=a[i];

            while(i<j){

                while(i<j&&temp<=a[j]) j--; //从后往前依次寻找第一个比temp小的数,并与a[i]交换,现在a[j]空出来了

                if(i<j) a[i++]=a[j]; //注意i++与j--,i 与j在本次循环中已经调整过,下一次循环应该从下一个与上一个开始

                while(i<j&&temp>a[i]) i++;//从前往后依次寻找第一个比temp大的数,将a[j]的坑填上,一次循环结束

                if(i<j) a[j--]=a[i];

            }

            a[i]=temp; //最后temp填入最后的坑中

            quicks(a,left,i-1); //递归实现

            quicks(a,i+1,right);

        }

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  刷题 算法 快速排序