题目:编制一个演示内部排序算法比较的程序
班级:姓名:学号:完成日期:
一、需求分析
1.本演示程序对以下6种常用的内部排序算法进行实测比较:起泡排序,直接插入排序,简单选择排序,快速排序,希尔排序,堆排序。
2.待排序表的元素的关键字为整数。比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换记为3次移动)。
3.演示程序以以用户和计算机的对话方式执行,在计算机终端上显示提示信息,对随机数组进行排序,并输出比较指标值。
4.最后对结果作出简单分析。
二、概要设计
1.可排序表的抽象数据类型定义:
ADT OrderableList{
数据对象:D={ai|ai∈IntegerSet,i=1,2,…,n,n≥0}
数据关系:R1={|ai-1,ai∈D,i=2,…,n}
基本操作:
InitList(n)
操作结果:构造一个长度为n,元素值依次为1,2,…,n的有序表。
RandomizeList(d,isInverseOrder)
操作结果:首先根据isInverseOrder为True或False,将表置为逆序或正序,然后将表进行d(0≤d≤8)级随机打乱。d为0时表不打乱,d越大,打乱程度越高。
RecallList()
操作结果:恢复最后一次用RandomizeList随机打乱得到的可排序表。
ListLength()
操作结果:返回可排序表的长度。
ListEmpty()
操作结果:若可排序表为空表,则返回Ture,否则返回False。
BubbleSort( &c, &s)
操作结果:进行起泡排序,返回关键字比较次数c和移动次数s。
InsertSort( &c, &s)
操作结果:进行插入排序,返回关键字比较次数c和移动次数s。
SelectSort ( &c, &s)
操作结果:进行选择排序,返回关键字比较次数c和移动次数s。
QuickSort(&c, &s)
操作结果:进行快速排序,返回关键字比较次数c和移动次数s。
ShellSort(long &c, long &s)
操作结果:进行希尔排序,返回关键字比较次数c和移动次数s。
HeapSort (&c, &s)
操作结果:进行堆排序,返回关键字比较次数c和移动次数s。
ListTraverse(visit())
word文档可自由复制编辑