还剩5页未读,继续阅读
文本内容:
《数据结构》课程设计报告实验五排序
一、需求分析本演示程序用编写,完成各种排序的实现,对输入的一组数字实现不同的排序C++
6.0方法,对其由小到大顺序输出1分别对直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序算法进行编写
2、对存储的函数即输入的数字进行遍历
3、初始化函数对输入的数字进行保存
4、主函数实现使用者操作界面的编写,对输入、选择、保存、输出的各种实现这之中还包括了各个函数的调用的实现、程序所能达到的功能完成对输入的数字的生成,并通过对各排序的选择实现数字从小到大的输出
二、程序主要功能以及基本要求
1、设计一个菜单,格式如下、直接插入排序
1、希尔排序
2、冒泡排序
3、快速排序
4、选择排序
5、堆排序
6、退出
72、选择不同的菜单但进行相应的排序,并给出排序的关键字序列
三、系统框架图本程序包含了个函数,它们分别是
91、直接插入排序的算法函数InsertSort⑵、希尔排序的算法函数ShellSort主函数⑶、冒泡排序算法函数BubbleSort
04、快速排序的算法函数Partition各对输操作个入的界面5>选择排序算法函数SelectSort排数组的设
6、堆排序算法函数序进行计,函HeapAdjustO遍历数的算
7、对存储数字的遍历函数Visit法调用初始函化
8、初始化函数InitSqList数
9、主函数main
四、详细设计实现各个算法的主要内容,下面是各个函数的主要信息:⑴各个排序函数的算法、直接插入排序void InsertSortSqListL{intij;for i=2;i=L.length;i++{ifL.r[i].keyL.r[i-l].keyL.r
[0]=L.r[i];L.r[i]=L.r[i-1];for j=i-2;L.r
[0].keyL.r[j].key;j-L.r[j+1]=L.rj];L.rU+1]=L.r
[0];
二、希尔排序void ShellSortSqListL|inti,j;〃增量int dk=1;whiledk=L.length/3〃增大增量dk=3Mk+l;whiledk0〃减小增量dk/=3;for i=dk;i=L.length;i++L.r
[0].key=L.r[i].key;while j=dkL.r[j-dk].keyL.r[O].key{L.r[j].key=L.r[j-dk].key;j-=dk;}L.r[j].key=L.r[O].key;
三、冒泡排序void BubbleSortSqListLint ij;fori=0;ivL.length-2;i++int flag=1;forj=0;jvL.length-i-2;j++ifL.r[j].keyL.r[j+l].key{flag=0;int temp;temp=L.r[j].key;L.r[j].key=L.r[j+l].key;L.r[j+l].key=temp;〃若无交换说明已经有序ifflag==lbreak;。