数据结构实习报告
——排序算法的比较
问题描述:通过随机的数据比较算法的关键字比较次数和移动次数。排序算法为:希尔排序,
堆排序,快速排序,归并排序。
要求:待排序的表长要大于或等于 100,测试数据通过计算机随机给出,保证结果的一般性。
算法思想:通过分析不同排序算法的执行过程,设计用两个计数器来记录关键字的比较次数
和移动次数。其中 count 计算比较次数,move 计算移动次数。通过测试主函数调用各个排
序算法,分别计算出数据关键字的比较次数和移动次数,因此便可对各个算法做出比较。
模块分化:
1. void InputData(DataType a[],int n):得到一组随机数据。
2. int ShellSort(Dataype a[],int n,int d[],int numOfD,int &count):希尔排序。
3. int CreatHeap(DataType a[];int n;int h,int &coun):创建堆。
4. int HeapSort(DataType a[],int n,int &count):堆排序。
5. void QuickSort(DataType a[],int low,int high,int&count,int&move):快速排序。
6. int Merge(DataType a[],int n,DataType swap[],int k,int&count):一次二路归并排序。
7. int MergeSort(DataType a[],int n,int&count):二路归并排序。
8. void OutputData(DataType a[],int n):输出排序前的数据序列。
9 void. PutData(DataType a[],int n):输出排序后的数据序列。
10. void main():测试主函数。
测试结果:
待排序的关键字数组的长度(任意):20
未排序前数据顺序为:
41 467 6334 8500 1169 6724 2478 2358 8962 6464
5705 1145 5281 7827 961 491 2995 2942 4827 5436
希尔排序关键字比较次数:36
希尔排序关键字移动次数:172