zoukankan      html  css  js  c++  java
  • 快速排序

    快速排序的核心在与找到驱轴后,根据驱轴大小对数组重新排序,如果是从小到大排序:将小的放在驱轴左边,大的放在驱轴右边,这样完成一轮了。然后第二轮同样的,把驱轴左边数组和右边数组的也进行这样的操作,直到数组只剩下一个值了,那就不用排序了。该选取过程是一个递归过程,每次选取的驱轴其实就是该数排序的位置。经过几轮递归找到所有驱轴放到相应位置,便完成了排序。

    #include"iostream"
    using namespace std;
    const int n = 10;
    void swap(int &a,int &b){
        int t = a;
        a = b;
        b = t;
    }
    void show(int *a,int n){
        for(int i = 0;i < n;i++){
            cout<<a[i]<<ends;
        }
        cout<<endl;
    }
    /*****************************/
    //选取第一个点作为驱轴
    void Qsort(int *a,int l,int r){
        int p = a[l];
        int i = l,j = r + 1;
        if(l >= r){
            return ;
        }
        while(i < j){        //i == j 就退出循环
            while(i < j && a[++i] < p);        //取左边第一个大与驱轴的值
            while(i < j && a[--j] > p);        //取右边第一个小与驱轴的值
            if(i < j){
                swap(a[i],a[j]);            //交换大值与小值
            }
        }
        swap(a[i - 1],a[l]);        //恢复驱轴
        Qsort(a,l,i - 1);
        Qsort(a,i,r);
    
    }
    void quicksort(int *a,int n){
        Qsort(a,0,n - 1);
    }
    /*******************************/
    int main(){
        int a[n] = {6  ,1 , 2, 7,  9,  3,  4,  5, 10,  8};
        //int a[n] = {1,2,3,4,5,6,7,8,9,10};
        //int a[n] = {10,9,8,7,6,5,4,3,2,1};
        //int a[n] = {1,3,5,7,9,2,4,6,8,10};
        show(a,n);
        quicksort(a,n);
        show(a,n);
        return 0;
    }
  • 相关阅读:
    TF-IDF
    3.路径模板两张表设计
    6.订单支付回调接口
    5.创建订单并生成支付链接接口
    5.使用ES代替whoosh全文检索
    4.docker基本使用
    3.ubuntu安装docker
    2.课程全文检索接口
    1.搜索引擎工作原理
    7.视频播放页面接口开发
  • 原文地址:https://www.cnblogs.com/oleolema/p/9112045.html
Copyright © 2011-2022 走看看