算法笔记 快排

几个算法核心

1)相对于冒泡排序,快排在一次遍历的时候不是光邻居互换,他是右边探测的点和左边探测的点大跨步互换。
2)通过分治的思想提高排序的效率

如何才能熟练的掌握快排的编码

  • 入参分左右,整个过程是个递归过程
  • 递归退出条件是左边坐标大于或者等于右边。
  • 函数内的主循环是两个探查坐标不重合,一轮递归要保证左右探查坐标最终重合,也就是所有数据都遍历到。
  • 把最左边的数据定位基准。
  • 从最右边和最左边分别开始探查,双索引探查,只要这两个索引不重合就继续探查。探查步骤是,先从最右边开始找比基准小的值,然后从最左边开始找比基准大的值。找到后完成一次交换,如果索引重合了,就和基准交换。
  • 基准交换后,二分开始递归。
void qSort(int a[], int left, int right)
{
    if(left>=right)
         return;
    int i = left;
    int j = right;
    int base = a[left];
    while(i!=j)
    {
        while(a[j]>=temp && j>i)
               j--;
        while(a[i]<=temp && i<j)
               i++;
        if(i<j)
        {
               int temp = a[j];a[j]=a[i];a[i]=temp;
         }
     }
     a[left] = a[j];
     a[j] = base;
     qSort(a,left, i-1);
     qSort(a,i+1, right);
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转:微信公众号:程序员小灰 快排算法 是按分治算法的思路进行排序的。 选定参照元素后,每次比较都按分治算法将小的移...
    markDownMan阅读 5,043评论 0 0
  • 排序算法 冒泡排序 冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。...
    倔强青铜弟中弟阅读 3,897评论 0 1
  • 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,不需要访问外存便能完成. 而外部排序是因排...
    大厂offer宝典阅读 4,453评论 0 0
  • 快排算法与归并算法时间复杂度都是O(nlogn)的排序算法。适合大规模的数据排序。思想利用的是分治思想。 归并排序...
    胖琪的升级之路阅读 9,279评论 2 0
  • 这两种排序算法都采用了分治算法的思想。 1. 归并算法 将一个待排序数组从中间分成 2 部分,分别将这 2 部分排...
    云飞扬1阅读 2,860评论 0 1

友情链接更多精彩内容