内部排序的稳定性
终极管理员 知识笔记 86阅读
排序内容的稳定性和稳定性有什么区别?
答:2、如果排序的内容仅仅是一个复杂对象的某一个数字属性,那么稳定性依旧将毫无意义(所谓的交换操作的开销已经算在算法的开销内了,如果嫌弃这种开销,不如换算法好了? ) 3、如果要排序的内容是一个复杂对象的多个数字属性,但是其原本的初始顺序毫无意义,那么稳定性依旧将毫无意义。
快速排序是稳定的排序方法吗?
答:再如,快速排序原本是不稳定的排序方法,但若待排序记录中只有一组具有相同关键码的记录,而选择的轴值恰好是这组相同关键码中的一个,此时的快速排序就是稳定的。
排序算法是稳定的还是不稳定的?
答:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,A1=A2,且A1在A2之前,而在排序后的序列中,A1仍在A2之前,则称这种排序算法是稳定的;否则称为不稳定的。 稳定也可以理解为一切皆在掌握中,元素的位置处在你在控制中.而不稳定算法有时就有点碰运气,随机的成分.当两元素相等时它们的位置在排序后可能仍然相同.但也可能不同.是未可知的.
内部排序算法都基于比较操作吗?
答:但不是所有的内部排序算法都要基于比较操作( 基数排序 不基于比较)。 不同的排序算法适合不同的环境,就全面性而言,很难提出一种被认为是最好的算法。 内部算法的性能取决于算法的时间复杂度和空间复杂度,而时间复杂度一般是由比较和移动的次数决定的。 基本思想:每次将一个待排序的记录按其关键字大小插入到前面已排好序的子序列中,直到插入完成。 插入排序中的三种重要排序算法: 直接插入排序 、 折半插入算法 、 希尔排序 。 将 L (i) 复制到 L (k). 实现对 L [1...n] 的排序,可将L (2)~L (n)依次插入到前面已排好序的子序列中。 将比较和移动操作分离:先折半查找出元素的待插入位置,然后统一地移动代插入位置之后的所有元素。