导航:首页 > 源码编译 > 排序算法最差

排序算法最差

发布时间:2023-06-16 12:03:21

❶ 快速排序法的平均时间复杂度和最坏时间复杂度分别是多少

快速排序的平均时间复杂度和最坏时间复杂度分别是O(nlgn)、O(n^2)。

当排序已经成为基本有序状态时,快速排序退化为O(n^2),一般情况下,排序为指数复杂度。

快速排序最差情况递归调用栈高度O(n),平均情况递归调用栈高度O(logn),而不管哪种情况栈的每一层处理时间都是O(n),所以,平均情况(最佳情况也是平均情况)的时间复杂度O(nlogn),最差情况的时间复杂度为O(n^2)。



(1)排序算法最差扩展阅读

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序,它采用了一种分治的策略,通常称其为分治法。快速排序算法通过多次比较和交换来实现排序,其排序流程如下:

(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。

(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。

(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。

(4)重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。

❷ 在排序算法中,哪个排序算法的时间复杂度最差为什么

这个不一定,要看数据内容.如果是特殊数据会导致一些算法退化.综合来看应该是基数最快,选择最慢吧(你说的选择是冒泡排序吧)

❸ 以下排序算法最坏情况下时间复杂度最低的是 A.冒泡排序 B.插入 C.选择 D.快排

在冒泡排序,插入排序,选择排序,快速排序中,在最最坏情况下,快速排序的时间复杂为O(n2) ,插入排序O(n2),选择排序O(n2),冒泡排序O(n2)。所以ABCD时间复杂度是一样的。

知识拓展:

在快速排序算法中,最为关键的就是选取一个基值,将数组分为大于基值以及小于基值两部分,并返回基值所以在位置以利用于递归划分。

对数组a,设需要划分的其中一段为a[p]~a[r],我们期待的结果是得到一个q,其中p<=q<=r,使得a[p]~a[q-1]<=a[q]<=a[q+1]~a[r],这个时候原先的一段数组被分成了三部分。

首先,设基值为这段数组的最后一个元素a[r],我们希望最后得到的结果是a[r]现在对应的值在算法结束后可以排在比他大和小的两部分的中间爱。

然后令i=p-1; j=p,当发现有a[j]>x时,j继续前进,不需要任何移动。当发现a[j]<=x时,我们需要将这个元素放到小于基值的一边,于是将i自加1,并交换此时a[i],与a[j]的元素,然后j自加1。这个时候i指向的是比基值小的那段数据的最后一个元素,j指向的是第一个还没有判断的剩余元素。

上面一步不断循环直到j指向了r,此时只剩下r没有和基值判断了,而a[r]本来就是基值,而除了a[r]以外,a[p]~a[i]是小于基值的部分,a[i+1]~a[r-1]是大于基值的部分,所以此时只需交换a[i+1]和a[r]即可。

由于对数组a从头到尾扫描一次就可以得到结果,因此这一部分算法复杂度为o(n)

阅读全文

与排序算法最差相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:485
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:382
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163