• 快速排序


    快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

    快速排序的一般步骤:

    1:在数组中选取一个基数,一般选取第一个数为基数。

    2:(记数组的左端为 i 右端为 j)从右往左遍历(j--),找到第一个小于基数的数,将其放在基数的左边;

    3:从左往右遍历(i++),找到第一个大于基数的数,将其放在上一步找到的小于基数的数的位置;

    4:返回第二步,直到所有的数都有序;

    图解:

    c++代码:

    //快速排序 
    #include<iostream>
    using namespace std;
    void quick_sort(int A[],int left,int right)
    {
        if(left<right)
        {
            int i=left;
            int j=right;
            int x=A[i];
            while(i<j)
            {
                while(i<j&&A[j]>x)
                   j--;
                if(i<j) A[i++]=A[j];
                while(i<j&&A[i]<x)
                   i++;
                if(i<j) A[j--]=A[i];
            }
           A[i]=x;
           quick_sort(A,left,i-1);
           quick_sort(A,i+1,right);
        }
    }
    int main()
    {
        int n;
        cin>>n;
        int A[n];
        for(int i=0;i<n;i++)
           cin>>A[i];
         quick_sort(A,0,n-1);
         for(int i=0;i<n;i++)
           cout<<A[i]<<" ";
          return 0; 
    }
  • 相关阅读:
    L7-5 搞笑的表情包
    L7-6 神奇的验证码
    Fabric中的ACLs相关
    first-network
    关于MSP
    关于数字证书
    Linux命令学习笔记
    shell学习笔记
    区块链
    log的不同级别
  • 原文地址:https://www.cnblogs.com/zhoubo123/p/11369309.html
Copyright © 2020-2023  润新知