预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(完整word版)数据结构排序实验报告 (完整word版)数据结构排序实验报告 (完整word版)数据结构排序实验报告 《数据结构》课程设计报告 实验五排序 一、需求分析: 本演示程序用C++6.0编写,完成各种排序的实现,对输入的一组数字实现不同的排序方法,对其由小到大顺序输出。 (1)分别对直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序算法进行编写。 (2)、对存储的函数即输入的数字进行遍历。 (3)、初始化函数对输入的数字进行保存。 (4)、主函数实现使用者操作界面的编写,对输入、选择、保存、输出的各种实现。这当中还包括了各个函数的调用的实现。 (5)、程序所能达到的功能:完成对输入的数字的生成,并通过对各排序的选择实现数字从小到大的输出。 二、程序主要功能以及基本要求: (1)、设计一个菜单,格式如下: 1、直接插入排序 2、希尔排序 3、冒泡排序 4、快速排序 5、选择排序 6、堆排序 7、退出 (2)、选择不同的菜单但进行相应的排序,并给出排序的关键字序列。 三、系统框架图: 本程序包含了9个函数,它们分别是: (1)、直接插入排序的算法函数InsertSort()。 (2)、希尔排序的算法函数ShellSort()。 主函数 (3)、冒泡排序算法函数BubbleSort()。 操作界面的设计,函数的调用。 对输入的数组进行遍历初始化 各个排序算法函数 (4)、快速排序的算法函数Partition()。 (5)、选择排序算法函数SelectSort()。 (6)、堆排序算法函数HeapAdjust()。 (7)、对存储数字的遍历函数Visit()。 (8)、初始化函数InitSqList()。 (9)、主函数main()。 四、详细设计 实现各个算法的主要内容,下面是各个函数的主要信息: (1)各个排序函数的算法: 一、直接插入排序 voidInsertSort(SqList&L) { inti,j; for(i=2;i<=L.length;i++) { if(L.r[i].key<L.r[i-1].key) { L.r[0]=L.r[i]; L.r[i]=L.r[i-1]; for(j=i-2;(L.r[0].key<L.r[j].key);j--) L.r[j+1]=L.r[j]; L.r[j+1]=L.r[0]; } } } 二、希尔排序 voidShellSort(SqList&L) { inti,j; intdk=1;//增量 while(dk<=L.length/3) dk=3*dk+1;//增大增量 while(dk>0) { dk/=3;//减小增量 for(i=dk;i<=L.length;i++) { L.r[0].key=L.r[i].key; j=i; while((j>=dk)&&(L.r[j-dk].key>L.r[0].key)) { L.r[j].key=L.r[j-dk].key; j-=dk; } L.r[j].key=L.r[0].key; } } } 三、冒泡排序 voidBubbleSort(SqList&L) { inti,j; for(i=0;i<L.length-2;i++) { intflag=1; for(j=0;j<L.length-i-2;j++) if(L.r[j].key>L.r[j+1].key) { flag=0; inttemp; temp=L.r[j].key; L.r[j].key=L.r[j+1].key; L.r[j+1].key=temp; } //若无交换说明已经有序 if(flag==1) break; } } 四、快速排序 intPartition(SqList&L,intlow,inthigh) { //分割区域函数 L.r[0]=L.r[low]; intpivotkey=L.r[low].key;//一般将顺序表第一个元素作为支点 while(low<high) { while(low<high&&L.r[high].key>=pivotkey) high--; L.r[low]=L.r[high]; while(low<high&&L.r[low].key<=pivotkey) low++; L.r[high]=L.r[low]; } L.r[low]=L.r[0];//返回枢轴位置 returnlow; } vo