快速排序问题
来源:互联网 发布:农村淘宝的前景怎么样 编辑:程序博客网 时间:2024/04/30 01:58
快速排序问题是一个时间复杂度为O(nlgn)的算法,下面就是快速排序的具体实现的过程,希望大家能够给一些建议。
下面我们来研究一下最坏情况下这个算法的时间复杂度,以及什么是这个算法的最坏情况。
1.最坏情况的分析,最坏情况就是partition划分的过程当中,因为其时间复杂度为O(n),而每一次花分都是一边n-1另一边是1,所以这个时候
T(n)=T(n-1)+O(n),所以总的来说时间复杂度就是O(n^2),这是最坏情况下的时间复杂度。
2.最优情况的分析,经过前面分析的情况之后,我们就会了解最优的情况就是每次划分都是使该序列划分为一半,加速了排序完成的过程,所以T(n)=2T(n/2)+O(n),所以最好情况下的时间复杂度就是O(nlgn)。
3。平均情况下,快速排序的时间复杂度可以使用求数学期望的方式,,其渐进解是,公式引自某知乎用户,实在太难敲。
#include<iostream>using namespace std;#include<stdio.h>int Partition(int a[],int p,int r){ int i=p,j=r+1; int x=a[p]; while(true) { while(a[++i]<x&&i<r); while(a[--j]>x); if(i>=j) break; swap(a[i],a[j]); } a[p]=a[j]; a[j]=x; return j;}void Quicksort(int a[],int p,int r){ if(p<r) { int q=Partition(a,p,r); Quicksort(a,p,q-1); Quicksort(a,q+1,r); }}int main(){ int a[]={1,3,4,2}; int n=4; Quicksort(a,0,n-1); for(int i=0;i<n;i++) printf("%d\t",a[i]); return 0;}
0 0
- 排序问题-快速排序
- 排序问题之快速排序
- 快速排序基本问题
- 快速排序 有问题
- 快速排序问题
- 快速排序问题
- 快速排序问题
- 快速排序问题
- 快速排序及快速选择问题
- c代码--快速排序问题
- c代码--快速排序问题
- 快速排序遇到的问题
- 快速排序 quicksort 细节问题
- 快速排序的溢出问题
- 快速排序遇到的问题
- 非递归快速排序问题
- 基础问题[ 快速排序 ]、[ 归并排序 ]
- 排序问题进击之二:快速排序
- [leetcode] 330. Patching Array
- webview 不显示图片
- java thread
- win10 cmd窗口切换目录并运行python代码
- Eqs POJ
- 快速排序问题
- gdb调试
- numpy-nditer
- C++第4次实验 项目6:输出星号图
- 看板中的粉色卡
- servlet重定向到jsp后,css样式和图片都没了,解决办法
- 二叉树的插入函数
- Ubuntu16.04+Pycharm+Anaconda配置
- Android用命名含sw的文件夹做屏幕适配原理