主题:判断排序稳定性的算法
tgnian
[专家分:100] 发布于 2008-05-07 00:01:00
若有些排序较难判断,则判断三种基本排序(插入,冒泡,选择)的稳定性
回复列表 (共3个回复)
沙发
卧龙孔明 [专家分:240] 发布于 2008-05-17 11:34:00
写个随机数据生成的函数+特殊数据生成函数就可以了,然后生成多组数据,比较排序的速率。
特殊数据包括:
升序数据,降序数据,峰状数据,谷状数据,完全相同数据(例如100000个1)等
板凳
tgnian [专家分:100] 发布于 2008-05-23 12:53:00
排序算法的稳定性不是说 两个相同的元素排序后位置不变吗 2 5’ 3 6 5
排序后为2 3 5’ 5 6
若为 2 3 5 5’ 6
则不稳定
3 楼
卧龙孔明 [专家分:240] 发布于 2008-05-23 20:55:00
稳定我感觉包括两种:
一种是楼上所言,例如shell排序等在排序中会出现楼上所举的例子的那种情况
对于那种情况,可以用标记法构造结构体
struct
{
int special; /*特殊标号*/
int num; /*数据*/
}
排序后观察相同数据 标号与标号之间的前后关系是否在排序后改变
一种是时间稳定性,例如shell排序,快速排序等对于相同规模的不同数据可能用时不同。对于这种情况,则使用 我在1楼种说的方法判断
我来回复