关闭

【刷题之路】快速排序

标签: 刷题算法快速排序
99人阅读 评论(0) 收藏 举报

经典算法

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);
        }
    }
};

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11870次
    • 积分:811
    • 等级:
    • 排名:千里之外
    • 原创:72篇
    • 转载:2篇
    • 译文:0篇
    • 评论:1条