美文网首页
详解快速排序

详解快速排序

作者: 郑明明 | 来源:发表于2016-10-27 11:28 被阅读97次
快速排序是一个非常重要的算法,对于大数据的排序,效率上要比冒泡排序和插入排序这些算法高很多,所以是程序员必须掌握的算法
  • 算法的思路
    快速排序算法其实很简单,采用分治策略。步骤如下:
    1. 选取一个基准元素(pivot)
    2. 比pivot小的放到pivot左边,比pivot大的放到pivot右边
    3. 对pivot左边的序列和右边的序列分别递归的执行步骤1和步骤2
  • 具体代码如下
/*
 * l:需要排序的左边界
 * r:需要排序的右边界
 * a:需要排序的数组 
 */
void quickSort(int *a, int l, int r)  {
    if (l < r)  {
        int i,j,x; 
        i = l;
        j = r;
        x = a[i];
        while (i < j) { 
             while(i < j && a[j] > x) {
                j--; // 从右向左找第一个小于x的数
             } 
             if(i < j)
             a[i++] = a[j]; //这里是i++所以是先赋值后自加
             while(i < j && a[i] < x) {
                i++; // 从左向右找第一个大于x的数
             }
             if(i < j)
             a[j--] = a[i];
         } 
    a[i] = x;
    quickSort(a, l, i-1); /* 递归调用 */
    quickSort(a, i+1, r); /* 递归调用 */
   }
}

相关文章

  • 排序

    排序 快速排序 归并排序 计数排序 Python实现 理解 详解 稳定:如果a原本在b前面,而a=b,排序之后a仍...

  • 快速排序优化详解

    原文地址:快速排序优化详解 正如它的名字所体现,快速排序是在实践中最快的已知排序算法,平均运行时间为O(NlogN...

  • Java 9种排序算法详解和示例汇总

    冒泡排序、选择排序、直接插入排序、二分法排序、希尔排序、快速排序、堆排序、归并排序、基数排序,共9中排序算法详解和...

  • 详解快速排序

    快速排序是一个非常重要的算法,对于大数据的排序,效率上要比冒泡排序和插入排序这些算法高很多,所以是程序员必须掌握的...

  • 快速排序详解

    快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。它...

  • 快速排序详解

  • 快速排序

    Java快速排序图文详解 正文来自:https://www.cnblogs.com/ahalei/p/356843...

  • 详解快速排序算法

    基本思想 本文的思路是以从小到大为例讲的。快速排序的基本思想是任取待排序序列的一个元素作为中心元素(可以用第一个,...

  • JS-排序详解-快速排序

    说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在...

  • 【排序知多少】快速排序详解

    快速排序思路 1、选取基准值,并标明首、尾的标识low、high; 2、先从后往前判断,当high的值大于基准值时...

网友评论

      本文标题:详解快速排序

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