快速排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。

今天介绍快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。

方法其实很简单:

     假设我们对“6,1,2,7,9,3,4,5,10,8”这10个数进行排序

     首先在这个序列里随便找一个基准数,为了方便就让第一个数“6”作为基准数。

     然后分别从序列两端开始寻找,先从右往左找一个小于6的数,再从左往右找一个大于6的数,然后交换它们。

     6  1  2  7  9  3  4  5  10  8  转换为 6 1 2 5 9 3 4 7 10 8

     直到i==j的时候 就成了这样

     6 1 2 5 4 3 9 7 10 8(绿色3就是i==j的地方)

     交换6 和 3 ,然后6左边的全是小于等于6的数,右边的全是大于等于6的数 3 1 2 5 4 6 9 7 10 8

     之后再把“6”右边的数快速排序,左边的也快速排序,递归进行,最后生成答案。

技术分享
//核心代码
void quicksort(int left,int right)
{
     if(left>right)return ;
     int i=left,j=right,temp=a[left];
     while(i!=j)
     {
         while(a[j]>=temp && i<j)j--;
         while(a[i]<=temp && i<j)i++;
         if(i<j)swap(a[i],a[j]);
     }
     a[left]=a[i];
     a[i]=temp;
     quicksort(left,i-1);
     quicksort(i+1,right);
     return;
}
View Code

 

    

以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

如何使用sublime代码片段快速输入PHP头部版本声明

代码片段如何使用CSS来快速定义多彩光标

vs2003:快速片段工具