关于排序算法中的稳定与不稳定的说法

来源:互联网 发布:淘宝达人认证大v 编辑:程序博客网 时间:2024/05/08 23:13

最近在复习数据结构,这里记录一些基础知识和复习感悟,以飨路人,互帮互助、共同富裕。

排序算法的稳定性判断(既稳定的还是不稳定的)

大白解释:对于一个序列{5,6,4,4,1,2,3}的七个数字,你会发现第三个和第四个都是'4',没错,这里为方便叙述,计为4(1)和4(2),且记住4(1)领先于4(2),就是说4(1)排在4(2)前面;如果按从小到大排序,得到的结果是{1,2,3,4,4,5,6},如果,排好的序列中的这里的第四个和第五个'4',分别对应上个序列的4(1)和4(2)则说明此排序算法是稳定的,即没有改变相同数字最初的顺序;若是这两个对应的是4(2)和4(1),则改变了相同数字最初的次序,称为次算法是不稳定的。

小智解释:有给定的多条记录的一个序列R={r1,r2,…,rn},其对应的关键字为K={k1,k2,…,kn},则可以描述为:

输入:序列R={r1,r2,…,rn},关键字K={k1,k2,…,kn}

输出:新序列R'={r1',r2',…,rn'},关键字K={k1',k2',…,kn'},使得k1'<=k2'<=…<=kn'

如果记录的关键字都没有重复出现,那么排序算法可以得到唯一的结果;否则,排序的结果可能不唯一。当关键字可以重复出现时,假设ki=kj,且在排序前的序列R中,Ri领先于Rj,若在排序后的序列R'中Ri仍领先于Rj,则称排序算法是稳定的;否则,若排序后的序列R'中,Rj领先于Ri,则称排序算法是不稳定的。例如,序列{5,6,4(1),4(2),1,2,3},用小括号中数字区分数字'4'。若排序后得到{1,2,3,4(2),4(1),5,6},则该排序方法是不稳定的。