1、 数据结构 课程设计报告 专 业 计算机科学与技术 班 级 网络工程 姓 名 学 号 指导教师 起止时间 2013.5.62013.5.20 课程设计课程设计:排序综合排序综合 一、一、任务任务描述描述 (1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、 冒泡排序、快速排序、选择排序、堆排序、归并排序) 。并把排序后的结果保存在不同的文 件中。 (2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比) ,找出其中 两种较快的方法。 二、二、问题分析问题分析 1、功能分析功能分析 分析设计课题的要求,要求编程实现以下功能: (1)显示随机数:调用 D
2、ip()函数输出数组 a。数组 a中保存有随机产生的随机数。 (2)直接选择排序:通过 n-I 次关键字间的比较,从 n-i+1 个记录中选出关键字最小的 记录,并和第 i 个记录交换之。 (3)冒泡排序:如果有 n 个数,则要进行 n-1 趟比较。在第 1 趟比较中要进行 n-1 次两 两比较,在第 j 趟比较中要进行 n-j 次两两比较。 (4)希尔排序:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待 整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。 (5)直接插入排序:将一个记录插入到已排序好的有序表中,从而得到一个新的、记录 数增 1 的有序表。设整个
3、排序有 n 个数,则进行 n-1 趟插入,即:先将序列中的第 1 个记录 看成是一个有序的子序列, 然后从第 2 个记录起逐个进行插入, 直至整个序列变成按关键字 非递减有序列为止。 (6)显示各排序算法排序后的的数据和时间效率,并比较找出其中 2 种较快的方法。 2、数据对象分析、数据对象分析 排序方式:直接选择排序、冒泡排序、希尔排序、直接插入排序 显示排序后的的数据和时间效率。 三、数据结构设计三、数据结构设计 1.主要全程变量及数据结构主要全程变量及数据结构 数据结构: typedef struct KeyType key; InfoType otherinfo; RedType; t
4、ypedef struct RedType rMAXSIZE+1; int length; SqList; 2.算法的入口参数及说明算法的入口参数及说明 #include #define MAXSIZE 20 #define LT(a,b) (a)按键错误!n“); getchar(); void Disp(int a) int i; system(“cls“); for(i=0;i=1;i-) t=a0; a0=ai; ai=t; creatheap(a,0,i-1); void quicksort(int a,int n,int p) int i,j,low,high,temp,top=-
5、1; struct node int low,high; stN; top+; sttop.low=0;sttop.high=n-1; while(top-1) low=sttop.low;high=sttop.high; top-; i=low;j=high; if(lowhigh) temp=alow; while(i!=j) while(itemp)j-; if(ij)ai=aj;i+; while(ij if(ij)aj=ai;j-; ai=temp; top+;sttop.low=low;sttop.high=i-1; top+;sttop.low=i+1;sttop.high=hi
6、gh; double TInsertSort(int a,int p) int i; int bN; for(i=0;iN;i+) bi=ai; LARGE_INTEGER m_liPerfFreq=0; QueryPerformanceFrequency( LARGE_INTEGER m_liPerfStart=0; QueryPerformanceCounter( InsertSort(b,p); LARGE_INTEGER liPerfNow=0; QueryPerformanceCounter( double time=liPerfNow.QuadPart - m_liPerfStart.QuadPa