数据排序算法.docx
《数据排序算法.docx》由会员分享,可在线阅读,更多相关《数据排序算法.docx(10页珍藏版)》请在冰豆网上搜索。
数据排序算法
福州大学
《操作系统原理》上机实验报告
专业和班级
2011级计算机科学与技术
成绩
姓名
学号
课程名称
操作系统原理
实验名称
排序综合练习
实
验
目
的
和
要
求
利用随机函数生成30000个随机正整数,用多种方法进行排序。
1.这些随机数的取值为5位整数,以每行15个显示。
2.采用的排序方法不低于4种,取自:
冒泡排序、直接插入排序、希尔排序、快速排序、选择排序、堆排序、归并排序等。
3.分别计算每种算法排序所花费的时间,并简要对比分析。
4.程序最好有菜单供选,有信息提示。
理
论
基
础
1.常用的排序方法有哪些?
答:
冒泡排序、直接插入排序、希尔排序、快速排序、选择排序、堆排序、归并排序、箱排序、基数排序。
2.简要介绍你程序中所用到的排序方法的特点。
答:
1、冒泡排序:
每一趟排序都使有序区增加了一个气泡,在经过n-1趟排序之后,有序区中就有n-1个气泡,而无序区中气泡的重量总是大于等于有序区中气泡的重量,所以整个冒泡排序过程至多需要进行n-1趟排序。
2、快速排序:
在R[low..high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low..pivotpos-1)和R[pivotpos+1..high],并使左边子区间中所有记录的关键字均小于等于基准记录(不妨记为pivot)的关键字pivot.key,右边的子区间中所有记录的关键字均大于等于pivot.key,而基准记录pivot则位于正确的位置(pivotpos)上,它无须参加后续的排序。
3、堆排序:
堆排序(HeapSort)是一树形选择排序。
堆排序的特点是:
在排序过程中,将R[l..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系【参见二叉树的顺序存储结构】,在当前无序区中选择关键字最大(或最小)的记录。
4、选择排序:
方法:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
性能:
比较次数O(n^2),n^2/2;交换次数O(n),n;交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CUP时间多,所以选择排序比冒泡排序快。
但是N比较大时,比较所需的CPU时间占主要地位,所以这时的性能和冒泡排序差不太多,但毫无疑问肯定要快些。
实
验
算
法
主
体
内
容
及
说
明
1、创建随机函数生成30000个随机正整数。
2、冒泡排序方法代码:
3、快速排序算法代码:
4、堆排序的算法代码:
5、选择排序算法的代码:
6、主调用函数:
结
果
截
图
与
分
析
1、创建随机函数生成30000个随机正整数的结果。
2、冒泡排序和对应的时间的效果图:
3、快速排序和对应消耗的时间的效果图:
4、堆排序和对应消耗的时间的效果图:
5、选择排序和对应消耗的时间的效果图:
备
注
参考材料见:
1.
2.