1、 计算机学院计算机学院 数据结构数据结构课程设计课程设计 题 目:数据结构排序算法演示系统 班 级: 姓 名: 学 号: 同组人姓名: 起 迄 日 期: 课程设计地点: 指导教师: 评阅意见:评阅意见: 成绩评定成绩评定: 评阅人:评阅人: 日期:日期: 目录 一、课程设计的目的 1 二、设计内容和要求 1 三、数据采取的结构 1 四、功能模块详细设计 1 4.1 详细设计思想 . 2 4.1.1 冒泡排序 5 4.1.2 快速排序 7 4.1.3 直接插入排序 9 4.1.4 希尔排序 . 10 4.1.5 直接选择排序 . 12 4.1.6 堆排序 . 14 4.1.7 归并排序 . 17
2、 五、总结或心得体会. 19 六、参考文献. 20 七、附录. 20 - 1 - 一. 设计目的 随着计算机技术的发展,各种排序算法不断的被提出。排序算法在计算机科 学中有非常重要的意义,且应用很广泛。在以后的发展中排序对我们的学习和生 活的影响会逐渐增大,很有必要学习排序知识。此次课程设计一方面使自己掌握 排序的知识,另一方面锻炼一下团队合作开发系统的能力。 二. 设计内容和要求 功能要求: (1)界面友好,易与操作。可采用菜单或其它人机对话方式进行选择。 (2)实现各种内部排序。包括直接插入排序,冒泡排序,直接选择排序,希尔排 序,快速排序,堆排序,归并排序。 (3)待排序的元素的关键字为
3、整数或(字符)。可用随机数据和用户输入数据作 测试比较。比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字 交换以 3 次计)。 (1) 演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列 表,以便比较各种排序的优劣。 三. 本设计所采用的数据结构 typedef struct int key; RecType; 四.功能模块详细设计 希 尔 排 序 排序算法演示系统 冒 泡 排 序 归 并 排 序 快 速 排 序 直 接 插 入 排 序 直 接 选 择 排 序 堆 排 序 - 2 - 4.1 详细设计思想 主函数: #include #include #include
4、 #define L 8 /排序元素个数 #define FALSE 0 #define TRUE 1 typedef struct int key; RecType; RecType RL; int num; int sum; int sun; /定义排序趟数的全局变量 /系统主界面 /主函数 int main() RecType S100; int i,k; char ch1,ch2,q; printf(“ntt*排序算法演示系统*nntt 请输 入%d 个待排序的数据:n“,L); for(i=1;iRj+gap.key) x=Rj.key;/交换语句 Rj.key=Rj+gap.key
5、; Rj+gap.key=x; j=j-gap; y+;/移动次数+ else j=0; gap=gap/2; m+;/比较次数+ /输出语句包括排序的结果及次数 printf(“tt 第%d 趟希尔排序的结果为:ntt“,m); for(k=1;k=1;i-) /建立初始堆 CreateHeap(i,L, x=0; y=0; for(i=L-1,k=1;i=1;i-,k+) /将堆中根节点和最后一个节点交换 temp=Ri+1.key; Ri+1.key=R1.key; R1.key=temp; CreateHeap(1,i, printf(“tt 第%d 趟堆排序的结果为:ntt“,k); for(j=1;jRj+gap.key) - 24 - x=Rj.key;/交换语句 Rj.key=Rj+gap.key; Rj+gap.key=x; j=j-gap; y+;/移动次数+ else j=0; gap=gap/2; m+;/比较次数+ /输出语句包括排序的结果及次数 printf(“tt 第%d 趟希尔排序的结果为:ntt“,m); for(k=1;k=1;i-) /建立初始堆 CreateHeap(i,L, x=0; y=0; for(i=L-1,k=1;i=1;i-