《排序试验报告》详细记录了针对不同算法进行的一系列排序测试结果与分析,旨在评估和比较各种排序方法在实际应用中的性能表现。
《数据结构》课程设计报告
专业:计算机科学与技术
班级:
姓名:
学号:
指导教师:
起止时间:2012.12~2013.1
**任务描述**
本次课程设计的任务是实现排序综合,具体要求如下:
- 利用随机函数生成超过2万个整数的序列;
- 使用至少三种不同的方法对这些数据进行排序处理(提示可以使用的方法包括插入排序、希尔排序、起泡排序、快速排序和选择排序);
- 将每种方法的结果保存到不同文件中;
- 测试并比较各种方法在实际运行中的性能,最终确定两种较快的算法。
**问题分析**
1. 功能需求:
- 创建顺序表(即生成随机整数序列)
- 对上述数据进行排序操作
- 统计每种排序方法的时间消耗
2. 数据结构设计:使用顺序存储方式来实现待处理的数据集合,具体定义如下:
```c
typedef int Status;
typedef int KeyType; // 排序码为整型量
typedef int InfoType;
struct Record {
KeyType key ; // 排序码
InfoType otherinfo; // 其他信息项
};
struct SqList {
struct Record * r; // 数据存储区,r[0]作为哨兵或缓冲单元使用
int length; // 表长度
};
```
**功能设计**
(一)主控菜单:
程序运行时显示如下选项供用户选择:
1. 直接插入排序
2. 希尔排序
3. 起泡排序
4. 快速排序
5. 简单选择排序
0. 退出系统
(二)模块划分及函数调用关系:
根据任务要求,程序被划分为以下几个主要部分:
- 主控菜单选择功能:`menu()`
- 创建顺序表的初始化操作:`InitList_Sq(L)`
- 排序算法实现:
- 直接插入排序:`Insertsort(L)`
- 希尔排序:`ShellSort()`
- 起泡排序: `Bubble_sort()`
- 快速排序: `QSort ( )`
- 简单选择排序:`SelectSort()`
程序主要结构如下图所示:
```
Menu()
InitList_Sq(L)
Main()
Insertsort(L)
ShellSort()
Bubble_sort()
QSort ()
SelectSort()
main():
for(;;){
long start, end;
switch(menu()){
case 1:
printf(* 直接插入排序 *\n);
start=clock();
Insertsort(L);
end=clock();
printf(%d ms\n,end-start);
// 将结果保存到文件中
break;
... (同理处理其他选项)
}
```