数据结构7种排序算法(无基数排序)

一、实验目的
掌握多种排序方法的基本思想,包括直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序等,并能够用高级语言实现。通过对这些算法效率的比较,加深对算法的理解。
二、实验原理

三.实验内容
用随机数(介于1-100)产生10个待排序数据元素的关键字值)。
① 采用直接插入排序和希尔排序方法对上述待排数据进行排序并输出序后的有序序列;
② 采用冒泡排序、快速排序方法对上述待排数据进行排序并输出序后的有序序列;
③ 采用简单选择排序、堆排序方法对上述待排数据进行排序并输出序后的有序序列;
④ 采用归并排序方法对上述待排数据进行排序并输出排序后的有序序列;

头文件:

①插入排序

②折半插入排序

③选择排序

④起泡排序

⑤快速排序

⑥希尔排序

⑦堆排序

⑧归并排序

随机生成函数

输出函数

四.实验小结
(1)若n较小(例如n<50),可采用直接插入排序、冒泡排序或简单选择排序。如果记录中的数据较多,移动较费时的,应采取简单选择排序法。

(2)若记录的初始状态已经按关键码基本有序,则选用直接插入排序或冒泡排序法为宜。

(3)若n较大,则应采用改进排序方法,如快速排序、堆排序或归并排序法。这些排序算法的时间复杂度均为O(nlog2n),但就平均性能而言,快速排序被认为是目前基于比较记录关键码的内部排序中最好的排序方法,但遗憾的是,快速排序在最坏情况下的时间复杂度是O(n2),堆排序与归并排序的最坏情况时间复杂度仍为O(nlog2n)。堆排序和快速排序法都是不稳定的排序。若要求稳定排序,则可选用归并排序。

(4)基数排序可在O (d×n) 时间内完成对n个记录的排序,d是指单逻辑关键码的个数,一般远少于n。但基数排序只适用于字符串和整数这类有明显结构特征的关键码。

(5)前面讨论的排序算法,除基数排序外,都是在顺序存储上实现的。当记录本身的信息量很大时,为避免大量时间用在移动数据上,可以用链表作为存储结构。插入排序和归并排序都易在链表上实现,但有的排序方法,如快速排序和堆排序在链表上却很难实现。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注