- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
宁波大学 科学技术 学院
数据结构 实验报告
实验名称 排序算法比较
实验者 08信计 肖勤伟
一 实验名称
排序算法比较分析
二 实验目的
1. 掌握各种排序的基本思想。
2. 掌握各种排序方法的算法实现。
3. 掌握各种排序方法的优劣分析及花费的时间的计算。
4. 掌握各种排序方法所适应的不同场合。
三 实验内容
利用随机函数产生30000个随机整数,利用插入排序、起泡排序、选择排序、快速排序、堆排序、归并排序等排序方法进行排序,并统计每一种排序上机所花费的时间
四 实验步骤:
1需求分析
2算法概要
一、直接插入排序 :instertionSort(a)
直接插入排序算法分析:
故,时间复杂度为O(n2)。
(4) 只需少量中间变量作为辅助空间。
(5) 算法是稳定的。
二、选择排序:selectionSort(b)
选择排序算法分析:
(1)比较次数,在任何情况下,均为
(2)交换记录的次数
在最好情况下,原n个记录递增有序:不移动记录。
在最坏情况下共交换记录n-1对,移动记录数3(n-1)次。
故,时间复杂度为O(n2)。
(3)只需少量中间变量作为辅助空间。
(4)算法是不稳定的。
三、冒泡排序:bubbleSort(c)
冒泡排序算法分析:
(1)最好情况, 待排序的文件已是有序文件:
只需要进行1趟排序,
共计比较关键字的次数为n-1
不交换记录。
(2)最坏情况, 要经过n-1趟排序,
所需总的比较关键字的次数为
(n-1)+(n-2)+...+1=n(n-1)/2
交换记录的次数最多为
(n-1)+(n-2)+...+1=n(n-1)/2
移动记录次数最多为
3n(n-1)/2 。
(3)只需要少量中间变量作为辅助空间。
算法是稳定的。
四、快序排序:QSort(d)
快速排序算法分析:
(1)就平均速度而言,
快速排序是已知内部排序方法中最好的一种排序方法,
其时间复杂度为
O(nlog(n))。
(2)在最坏情况下,
快速排序所需的比较次数和冒泡排序的比较次数相同,
其时间复杂度为
O(n2)。
(3)快速排序需要一个栈作辅助空间,用来实现递归处理左、右子文件。
在最坏情况下,递归深度为n,
所需栈的空间大小为
O(n)。
(4)快速排序是不稳定的。
五、归并排序:MSort(e)
归并排序算法分析:
(1)对n个记录的文件进行归并排序,共需
log2n? 趟,
(2)每趟所需比较关键字的次数不超过n, 共比较
O(nlog2n) 次。
(3)每趟移动n个记录, 共移动记录
O(nlog2n) 个
(4)归并排序需要一个大小为n的辅助空间
y[1..n]。
(5)归并排序是稳定的。
六、堆排序:HeapSort(f)
堆排序算法分析:
(1)堆排序的时间,主要由建立初始堆和反复重建堆这两部分的时间开销构成,
它们均是通过调用Heapify实现的。
(2)堆排序的最坏时间复杂度为
O(nlgn)。
(3)堆排序的平均性能较接近于最坏性能。
由于建初始堆所需的比较次数较多,所以堆排序不适宜于记录数较少的文件。
(4)堆排序是就地排序,辅助空间为
O(1)。
(5)它是不稳定的排序方法
3抽象数据操作
直接插入排序 :instertionSort(a)
选择排序: selectionsort(b)
冒泡排序:bubbleSort(c)
快序排序:QSort(d)
归并排序:MSort(e)
堆排序:HeapSort(f)
4详细设计(源代码)
package sort;
import java.util.Date;
import java.util.Random;
public class Sort {
public final static int size=3000;
static int cx=0;
static int[] a=new int[size];
static int[] b=new int[size];
static int[] c=new int[size];
static int[] d=new int[size];
static int[] e=new int[size];
static int[] f=new int[size];
p
您可能关注的文档
最近下载
- 2021年中央民族工作会议全文.pdf VIP
- 危险货物基础知识及安全管理.pptx
- Unit3ReadingandThinkingLivinglegends课件-高中英语人教版必修第一册.pptx
- 寒假高二物理讲义.docx
- 国家开放大学电大考试成人学位英语必备词汇汇编《英语1》期末重点习题.doc
- 投标报价的管理技巧与策略方案.pptx
- 中国乙型肝炎病毒母婴传播防治指南(2024年版)解读.pptx
- 小学数学新人教版一年级上册第六单元《复习与关联》教案(2024秋).doc
- 佳能EOS-100d中文使用说明书(官方).pdf
- 2024年六年级上册道德与法治期中测试卷附参考答案ab卷.pdf
文档评论(0)