美文网首页
快排及优化

快排及优化

作者: 狗尾巴草败了 | 来源:发表于2017-08-21 17:29 被阅读0次
int Partition(int *a,int left,int right)
{
    int pivotkey;
    pivotkey=a[left];
    while (left<right)
    {
        while (left<right && a[right]>=temp)
            --right;
        //a[left]=a[right];

        swap(a[left], a[right]);

        while (left<right && a[left]<=temp)
            ++left;
        //a[right]=a[left];

       swap(a[left],a[right]);

    }
    //a[left]=temp;
    return left;
}
void QuickSort(int *a,int left,int right)
{
    int pivot;
    if (left>=right)
        return;
    pivot=Partition(a,left,right);
    QuickSort(a,left,pivot-1);
    QuickSort(a,pivot+1,right);
}

复杂度分析

快排最优的复杂度为o(nlogn)
最差时的复杂度为正序逆序时候,复杂度为o(n^2)
因为采用递归,造成栈空间的使用,空间复杂度为o(nlogn),

快速排序优化

  1. 优化选取的枢轴:
    选取三个数,取中间大小的数作为枢轴,一般选取最左边,中间和最右边的三个数

  2. 优化不必要的交换:
    如代码上 // 的代码

  3. 当数组较小时候,采用插入排序算法

相关文章

  • 快排及优化

    复杂度分析 快排最优的复杂度为o(nlogn)最差时的复杂度为正序或逆序时候,复杂度为o(n^2)因为采用递归,造...

  • 快排

    快排快排优化

  • 快排算法及优化思路

    快排 算法要点 设立基准值,以基准值为中心,根据分治思路把大于基准值放一边,小于基准值放另一边。 递归上一步的操 ...

  • 2018-07-13

    快速排序算法 快排普通版本: 快排优化版本: 测试代码:

  • 数据结构:快速排序优化思路

    既然这是一篇主题思想为优化快排的文章,自然就不讨论关于快排的一些定义和基础性的问题,只说快排应该怎么优化。 快排为...

  • 快排的优化

    0 荷兰国旗 设置两个标志位begin和end分别指向这个数组的开始和末尾,然后用一个标志位current从头开始...

  • 快排及常见两种优化方法

    csdn博客同步发布 正常快排 最近在找实习,然而我觉得博客还是要坚持日更,我相信时间总是挤出来的,不扯淡了,快排...

  • 计算机基础

    数据结构 散列解决冲突的方法有那些? 三种熟悉的排序算法?简述快排过程以及冒泡、插入、快排的区别?以及如何优化快排...

  • python 快排以及多种优化

    优化1:基准元素不再选择第一个元素,而是随机选择一个,这样避免了有序数组,时间复杂度最坏为log(n2) 的情况 ...

  • Python中的快排优化

    基本快速排序分析 以从小到大排序为例 选取一个主元(选取方式多样) 利用主元,将序列分为两个子序列,左侧都比主元小...

网友评论

      本文标题:快排及优化

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