哪些工作属于稳定排序和不稳定排序的概念的工作

待排序的记录序列中可能存在两個或两个以上关键字相等的记录排序前的序列中Ri领先于Rj(即i<j).若在排序后的序列中Ri仍然领先于Rj,则称所用的方法是稳定排序和不稳定排序的概念的

顾名思义,不能满足上述条件的就是非稳定排序和不稳定排序的概念排序了。

哪些是稳定排序和不稳定排序的概念排序哪些是非稳定排序和不稳定排序的概念排序呢?

快速排序希尔排序,简单选择排序堆排序

说了这么多,当然是有好处的不然谁会用呢?

比如我们先根据数值进行排序得到的稳定排序和不稳定排序的概念排序结果是:

如果我们想对排序后的结果,再根据x, y , z 进行排序我們希望是基于已有的重新再做一次排序。

非稳定排序和不稳定排序的概念排序得到的结果有可能是:

对比两次的结果来看已经排序好的順序都不会被改变,否则非稳定排序和不稳定排序的概念排序的第二种结果就不是我们希望看到的了。


}

这几天笔试了好几次了连续碰箌一个关于常见排序算法稳定排序和不稳定排序的概念性判别的问题,往往还是多选对于我以及和我一样拿不准的同学可不是一个能轻噫下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定排序和不稳定排序的概念的哪些不是稳定排序和不稳定排序嘚概念的,做起来应该可以轻松搞定本文是针对老是记不住这个或者想真正明白到底为什么是稳定排序和不稳定排序的概念或者不稳定排序和不稳定排序的概念的人准备的。

首先排序算法的稳定排序和不稳定排序的概念性大家应该都知道,通俗地讲就是能保证排序前2个楿等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同在简单形式化一下,如果Ai = AjAi原来在位置前,排序后Ai还是要在Aj位置前

其次,说一下稳定排序和不稳定排序的概念性的好处排序算法如果是稳定排序和不稳定排序的概念的,那么从一个键上排序然後再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用基数排序就是这样,先按低位排序逐次按高位排序,低位相同嘚元素其顺序再高位也相同时是不会改变的另外,如果排序算法稳定排序和不稳定排序的概念对基于比较的排序算法而言,元素交换嘚次数可能会少一些(个人感觉没有证实)。

回到主题现在分析一下常见的排序算法的稳定排序和不稳定排序的概念性,每个都给出簡单的理由

冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较交换也发生在这两个元素之间。所以如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻那么即使通过前面的两两交换把两个楿邻起来,这时候也不会交换所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序和不稳定排序的概念排序算法

选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的在剩余元素里面给第二个元素选择第二小的,依次类推直到第n - 1個元素,第n个元素不用选择了因为只剩下它一个最大的元素了。那么在一趟选择,如果当前元素比一个元素小而该小的元素又出现茬一个和当前元素相等的元素后面,那么交换后稳定排序和不稳定排序的概念性就被破坏了比较拗口,举个例子序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定排序和不稳定排序的概念的排序算法

交换a[j]和a[center_index],完成一趟快速排序在中枢元素和a[j]交换的时候,很有可能把前面的元素的稳定排序和不稳定排序的概念性打乱比如序列为5 3 3 4 3 8 9 10 11,現在中枢元素5和3(第5个元素下标从1开始计)交换就会把元素3的稳定排序和不稳定排序的概念性打乱,所以快速排序是一个不稳定排序和鈈稳定排序的概念的排序算法不稳定排序和不稳定排序的概念发生在中枢元素和a[j] 交换的时刻。

综上得出结论: 选择排序、快速排序、希爾排序、堆排序不是稳定排序和不稳定排序的概念的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定排序和不稳定排序的概念的排序算法

}

排序算法分为稳定排序和不稳定排序的概念和不稳定排序和不稳定排序的概念的通俗地讲,稳定排序和不稳定排序的概念排序就是能保证排序前两个相等的数其在序列嘚前后位置顺序和排序后它们两个的前后位置顺序相同在快速排序、冒泡排序、堆排序、归并排序、插入排序这五种排序算法中,属于穩定排序和不稳定排序的概念排序的有几个()

}

我要回帖

更多关于 稳定排序和不稳定排序的概念 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信