回 帖 发 新 帖 刷新版面

主题:判断排序稳定性的算法

若有些排序较难判断,则判断三种基本排序(插入,冒泡,选择)的稳定性

回复列表 (共3个回复)

沙发

写个随机数据生成的函数+特殊数据生成函数就可以了,然后生成多组数据,比较排序的速率。
特殊数据包括:
升序数据,降序数据,峰状数据,谷状数据,完全相同数据(例如100000个1)等

板凳

排序算法的稳定性不是说   两个相同的元素排序后位置不变吗  2 5’ 3 6 5
排序后为2  3  5’ 5  6
若为    2  3  5  5’ 6
则不稳定

3 楼

稳定我感觉包括两种:
一种是楼上所言,例如shell排序等在排序中会出现楼上所举的例子的那种情况
对于那种情况,可以用标记法构造结构体
struct
{
    int special; /*特殊标号*/
    int num; /*数据*/
}
排序后观察相同数据 标号与标号之间的前后关系是否在排序后改变
一种是时间稳定性,例如shell排序,快速排序等对于相同规模的不同数据可能用时不同。对于这种情况,则使用 我在1楼种说的方法判断

我来回复

您尚未登录,请登录后再回复。点此登录或注册