快速排序

1.快速排序是分治算法,所以用递归比较好实现

2.每一躺排序开始时,用low,high控制排序,当low  < high 时结束,此时low = high

3.每一躺排序结束时,把数据分为start--low -1,  high + 1--end两部分,并且此时low = high

3.关键字比较的排序算法,效率最快为log n,快速排序的优势在于空间复杂度为1,并且采用随机化的排序方法的话,时间复杂度也是log n。

void qiucksort(int A[], int start, int end){

    int low = start, high = end;

    int mid = A[low];

    if (start >= end){

        return;

    }

    while(low < high){

        while (low < high && A[high] >= mid) {   //这里加不加等号都不影响排序的结果,下面一样

            --high;

        }

        if(low < high){

            A[low++] = A[high];

        }

        while (low < high && A[low] < mid) {

            ++low;

        }

        if(low < high){

            A[high--] = A[low];

        }

    }

    A[low] = mid;

    qiucksort(A, high + 1, end);

    qiucksort(A, start, low - 1);

}

 

posted on 2014-11-29 22:47  远近闻名的学渣  阅读(130)  评论(0)    收藏  举报

导航