第8章排序技术研究.ppt

设关键码分别为k1, k2, …, km,多键排序有两种方法: ⑴ 依次对记录进行m次排序,第一次按k1排序,第二次按k2排序,依此类推。这种方法要求各趟排序所用的算法是稳定的; ⑵ 将关键码k1, k2, …, km分别视为字符串依次首尾连接在一起,形成一个新的字符串,然后,对记录序列按新形成的字符串排序。 排序的分类 1. 基于比较:基本操作——关键码的比较和记录的移动,其最差时间下限已经被证明为Ω(nlog2n)。 2. 不基于比较:根据关键码的分布特征。 直接插入排序过程示例 希尔插入排序过程示例 起泡排序过程示例 算法描述: index=i; for (j=i+1; j=n; j++) if (r[j]r[index]) index=j; 解决方法: 设置一个整型变量index,用于记录在一趟比较的过程中关键码最小的记录位置。 关键问题⑴:如何在无序区中选出关键码最小的记录? 解决方法: 第i趟简单选择排序的待排序区间是r[i] ~ r[n],则r[i]是无序区第一个记录,所以,将index所记载的关键码最小的记录与r[i]交换。 选择排序 关键问题⑵:如何确定最小记录的最终位置? 算法描述: if (index!=i) r[i]←→r[index]; void selectSort ( int

文档评论(0)

1亿VIP精品文档

相关文档