美文网首页
快速排序(C++实现)

快速排序(C++实现)

作者: 曲谐_ | 来源:发表于2017-10-15 23:52 被阅读0次

快速排序步骤:

  • 首先,对于一个无序数组,开始时选取一个数(通常是首位)作为我们判断的依据。
  • 从尾端往前遍历,找出一个数小于我们的目标数,两者交换。
  • 从头端往后遍历,找出一个数大于我们的目标数,两者交换。
  • 重复上述步骤,直到目标数在最中间,左边的都是小于它的数,右边的都是大于它的数。(即i==j时结束)
  • 递归。在小于它的数中间继续重复排序。直至三个数排序排好。
  • 递归。在大于它的数中间继续重复排序。直至三个数排序排好。

代码实现:

#include<iostream>
using namespace std;
void Quicksort(int a[],int left,int right)
{
    if(left < right)
    {
        int x = a[left];
        int i = left;
        int j = right;
        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;
        Quicksort(a,left,i-1);
        Quicksort(a,i+1,right);
    }
}
int main()
{
    int a[9] = {4,1,2,5,3,6,7,9,8};
    int len = sizeof(a)/sizeof(int);
    Quicksort(a,0,len-1);
    for(int i=0;i<len;i++)
        cout << a[i] << " ";
    return 0;
}

时间复杂度

理论上分析一下:
最坏情况:假设每一次最左边需要比较的元素在j--的过程中,一直都没有遇到比它小的元素,那么总共比较n-1次,第二轮则要n-2次,以此类推。。。(n-1)+(n-2)+...+1=1/2n^2。 时间复杂度为O(n^2)。
最好情况:每次五五分,那么就类似二分查找一般的“二分排序”,总共递归次数只需要二叉树的深度logn,每次递归比较n次。时间复杂度为O(nlogn)。
平均情况:O(nlogn)。证明过程略,太复杂记住即可。

相关文章

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 各种排序算法实现

    C++实现各种排序算法。上张图。 自定义的swap函数。 冒泡排序 插入排序 希尔排序 选择排序 快速排序 归并排...

  • 排序. 快速排序

    以前写过一篇, 分析的非常详细.排序算法(1) 快速排序 C++实现 引用了一个动图, 直观地感受快速排序过程.演...

  • 常见排序算法

    希尔排序,快速排序,堆排序,2路归并算法的c++简单实现 在 里面写了一个随机数列生成,可以快速验证算法的正确性 ...

  • 常见排序算法总结(程序员必会)

    看了总结图,我这里就总结一下 直接插入排序,冒泡排序,快速排序,堆排序和归并排序,使用C++实现 重新画了总结图 ...

  • 排序

    排序(C++实现)

  • 快速排序(C++实现)

    快速排序步骤: 首先,对于一个无序数组,开始时选取一个数(通常是首位)作为我们判断的依据。 从尾端往前遍历,找出一...

  • 基础算法笔记 python和C++

    二分查找 python code 选择排序 python code c++ code 快速排序 python c++

  • 快速排序

    //一个便于理解但不是最优的快速排序算法c++实现。 include using names...

  • C++ 常用代码

    vector 迭代器遍历 C++ 函数模板 冒泡排序 快速排序

网友评论

      本文标题:快速排序(C++实现)

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