之前在本校考研群里面看到,在群友不熟练的时间复杂度分析之下,选择排序和堆排序时间复杂度差了一个数量级,影响了我的一判断为什么不用选择排序,没有考虑系数加上时间太晚我直接咆哮:why not 选择排序?
堆排序加上建堆的过程应该和选择排序一个数量级,他的分析没有加建堆直接起飞,
下面是我的思考:
那么我就去查系数了,推导的话太冗杂,之前看过,无非是数学操作
堆排序建堆最坏情况:
选择排序要用k次数去乘以n一直到n-k+1
就算拿堆排序建堆最坏情况来比较
可以看出来直接选择排序在该类问题上没有优势
那他的优势在哪里??
直接选择排序有啥用呢?
虽然直接选择排序并不是最快的排序算法,但它有以下几个优点:
简单直观:直接选择排序的实现非常简单,易于理解和实现。
内存消耗小:直接选择排序算法的内存消耗较小,不需要额外的空间。
对小规模数据排序效率高:当数据量较小的时候,直接选择排序的效率比较高,因为它只需要比较n-1次(n为数据的个数)。
不会损坏原始序列的稳定性:直接选择排序不会改变两个相等元素的相对位置,因此是一种稳定的排序算法。
————————————————
版权声明:本文为CSDN博主「originalHSL.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/originalHSL/article/details/131055900
在快排的优化方法中小数据量直接插入排序具有优势,但是在最上面的问题中一直不占有优势。
题目的意思也是要考虑建堆后的优势,但是涉及稳定性就放弃堆排序。