1、综合排序软件综合排序软件 1 1题目:题目: 利用随机函数产生 N 个随机整数(20000 以上) ,对这些数进行多种方法进行排序。 1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、 起泡排序、快速排序、选择排序、堆排序、归并排序) 。并把排序后的结果保存在不同的文 件中。 2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比) ,找出其 中两种较快的方法。 3)如果采用 4 种或 4 种以上的方法者,可适当加分。 2. 2. 课题研究的目的和意义:课题研究的目的和意义: 排序是计算机程序设计中一种重要的操作,它的功能是将一个数据元素的任意序列,
2、重新排列成一个按关键字有序的序列。 目前我们已经掌握的排序方法很多, 每一种方法都有 其各自的优点, 通过对各种算法的研究以及不同方法之间的比较研究, 能让我们可以从更高 的层次上理解和掌握排序算法,而且能够在不同环境下,根据数据的不同特点,选择不同的 方法。因此,我们开展对排序算法的研究将更有利于我们解决问题,提高效率。 3.3.可行性论证:可行性论证: (1)就算法本身而言,它们是稳定的,时间复杂度是有限阶的,每种算法的思想是可 行的。 (2)处理数据(20000 个随机数)是有限的,并且同过这些排序方法可以实现排序。 4 4课程总体设计方案:课程总体设计方案: (1)对小组内个成员进行分
3、配,每位小组成员负责一种算法。 (2)讨论研究流程:制定算法的总体思路,查阅相关资料,按照预先分配编写程序, 程序整合,实验并修改。 (3)对程序中的排序方法进行扩充,小组集体研究了简单选择排序,希尔排序,快速 排序三种方法。 (4)最后总结。 5.5.若干关键技术及设计结果若干关键技术及设计结果 源程序: #include #include #include #define MAXSIZE 2300 typedef int KeyType; typedef int InfoType; typedef struct KeyType key; InfoType otherinfo; RcdTyp
4、e; typedef struct RcdType rMAXSIZE+1; long length; SqList; SqList CreaList () /建立 long i; SqList L; for(i=1;i1;i-) L.r0=L.ri; L.ri=L.r1; L.r1=L.r0; jh40+=3; L=HeapAdjust(L,1,i-1,bj4,jh4); return L; /堆排序 /5 简单选择排序 SqList SeledSort(SqList L,long bj5,long jh5) long i,j,k; bj50=0; jh50=0; for(i=1; irlow.key; pivotkey=L-rlow.key; jh70+=2; while(lowrhigh.key;jh70+=1; while(lowrlow.key)rlow.key;jh70+=1; L-rlow.key=L-r0.