数据结构c语言版严蔚敏清华大学出版社第十章排序.ppt

数据结构c语言版严蔚敏清华大学出版社第十章排序.ppt

数据结构c语言版严蔚敏清华大学出版社第十章排序

一、排序的定义 什么是排序(Sorting)? 简单地说,排序就是将一组杂乱无章的数据按一定的规律排列起来(递增或递减)。 排序是计算机中经常遇到的操作。 数据表(Data List) 待排序的数据对象的有限集合。 关键字(Key) 作为排序依据的数据对象中的属性域。 主关键字 不同的数据对象若关键字互不相同,则这种关键字称为主关键字。 排序的确切定义 使一组任意排列的对象变成一组按关键字线性有序的对象。 排序算法的稳定性 判断标准:关键字相同的数据对象在排序过程中是否保持前后次序不变。如 2, 2*,1,排序后若为1, 2*, 2 则该排序方法是不稳定的。 内排序与外排序 区分标准:排序过程是否全部在内存进行。 排序的时间开销 它是衡量算法好坏的最重要的标志。通常用算法执行中的数据比较次数和数据移动次数来衡量。 直接插入排序的稳定性 直接插入排序是一种稳定的排序方法。 原理:关键字相同的两个对象,在整个排序过程中,不会通过比较而相互交换。 例 算法评价 时间复杂度:T(n)=O(n2) 空间复杂度:S(n)=O(1) 希尔排序中gap的取法 Shell最初的方案是 gap= n/2, gap=gap/2,直到gap=1. Knuth的方案是gap = gap/3+1 其它方案有:都取奇数为好;或gap互质为好等等。 希尔排序的

文档评论(0)

1亿VIP精品文档

相关文档