美文网首页
快速排序

快速排序

作者: Luxin23 | 来源:发表于2018-01-19 11:43 被阅读34次

    快速排序是一种分治算法。它是将一个数组分割成两个子数组,与归并排序不同的是:快速排序保证左边的数组元素都要小于右边的数组元素。

    首先找到一个分割点,一般以数组的第一个元素作为这个分割点,先从左边往右边找。把比这个元素小的都放在左边,比它大的放在右边,然后又从右边往左边找。
    当两个指针相遇时,我们只需要把该分割点的元素放到该位置即可(分割点)。

    #include <iostream>
    using namespace std;
    
    void quikSort(int a[], int begin, int end){
        if(begin >= end)return;
        int i = begin;
        int j = end;
        int key = a[i];
        while(i < j){
            while(a[j] >= key && j > i)j--;
            a[i] = a[j];
            while(a[i] <= key && j > i)i++;
            a[j] = a[i];
        }
        a[i] = key;
        quikSort(a, begin, i - 1);
        quikSort(a, i + 1, end);
    }
    
    int main(){
        int a[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
        quikSort(a, 0, 9);
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:快速排序

          本文链接:https://www.haomeiwen.com/subject/tsjooxtx.html