稳定排序和不稳定排序.docxVIP

  • 6
  • 0
  • 约2.58千字
  • 约 2页
  • 2021-01-23 发布于天津
  • 举报
稳定排序和不稳定排序 这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多 选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目 ,当然如果你笔试之 前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本 文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前 2 个相等的数其 在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果 Ai = Aj, Ai原来在位置前,排序后 Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从 另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按 低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。另外, 如果排序算法稳定 ,对基于比较的排序算法而言 ,元素交换的次数可能会少一些 (个人感觉, 没有证实 )。 回到主题,现在分析一下常见的排序算法的稳定性,每个都给出简单的理由。 冒泡排序 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比 较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他 们俩交换一下的 ;如果两个相等的元素没有

文档评论(0)

1亿VIP精品文档

相关文档