- 26
- 0
- 约1.44万字
- 约 16页
- 2021-12-02 发布于江西
- 举报
数据结构实验报告
内部排序
班级: 13 软 工 一 班
学号: 姓名: 吕 蒙
学号: 姓名: 钱剑滨
学号: 姓名: 孔亚亚
学号: 姓名: 邱佃雨
13软工转本1 钱剑滨 实验报告
内部排序实验报告
信息工程 系 13 软工转本 1 日期 2016 年 06 月 07 日
一、 实验内容
编写程序实现各种内部排序(包括:冒泡排序、插入排序、选择排序、希尔排序、
快速排序、堆排序、归并排序、基数排序),并运用这些排序对一组随机生成的数组进
行排序。
二、 时间复杂度
1. 冒泡排序(O(n^2))
若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数 和
记录移动次数 均达到最小值: , 。所以,冒泡排序最好
的时间复杂度为 。若初始文件是反序的,需要进行 趟排序。每趟排序要进
行 次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录
置。在这种情况下,比较和移动次数均达到最大值:
冒泡排序的最坏时间复杂度为 。综上,因此冒泡
排序总的平均时间复杂度为 。
2. 插入排序(O(n^2))
如果目标是把 n 个元素的序列升序排列,那么采用插入排序存在最好情况和最坏
情况。最好情况就是,序列已经是升序排列了,在这种情况下,需要进行的比较操作需
(n-1)次即可。最坏情况就是,序列是降序排列,那么此时需要进行的比较共有 n(n-1)/2
次。插入排序的赋值操作是比较操作的次数加上 (n-1)次。平均来说插入排序算法的
时间复杂度为 O(n^2)。因而,插入排序不适合对于数据量比较大的排序应用。但是,
如果需要排序的数据量很小,例如,量级小于千,那么插入排序还是一个不错的选择。
3. 选择排序(O(n^2))
选择排序的交换操作介于 0 和 (n - 1) 次之间。选择排序的比较操作为 n (n - 1)
/ 2 次之间。选择排序的赋值操作介于 0 和 3 (n - 1 ) 次之间。比较次数 O(n^2),
比较次数与关键字的初始状态无关,总的比较次数N=(n-1)+(n-2)+...+1=n*(n-1)/2 。
交换次数 O(n ),最好情况是,已经有序,交换0 次;最坏情况交换n-1 次,逆序交换
n/2 次。交换次数比冒泡排序少多了,由于交换所需CPU 时间比比较所需的 CPU 时间
多,n 值较小时,选择排序比冒泡排序快。
4. 希尔排序
希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,步长
最大,所以插入排序的元素个数很少,速度很快;当元素基本有序了,步长很小,插入
排序对于有序的序列效率很高。所以,希尔排序的时间复杂度会比o(n^2)好一些。
5. 快速排序(O(n^2))
无论适用哪一种方法来选择pivot,由于我们不知道各个元素间的相对大小关系(若
知道就已经排好序了),所以我们无法确定pivot 的选择对划分造成的影响。因此对各
种pivot 选择法而言,最坏情况和最好情况都是相同的。
我们从直觉上可以判断出最坏情况发生在每次划分过程产生的两个区间分别包含
n-1 个元素和1 个元素的时候(设输入的表有n 个元素)。下面我们暂时认为该猜测正
确,在后文我们再详细证明该猜测。
对于有n 个元素的表L[p..r],由于函数Partition 的计算时间为θ (n),所以快速
排序在序坏情况下的复杂性有递归式如下:T(1)=θ(1),T(n)=T(n-1)+T(1)+θ(n)
您可能关注的文档
最近下载
- 2023年江苏省徐州市中考数学试卷.docx VIP
- 微党课认真落实三会一课制度PPT模板课件.pptx VIP
- 常见引流管的护理ppt课件.pptx
- 征兵理论考试题库及答案2025.docx VIP
- ZD中大力德 C20-800LRC驱动器说明书_V1.04.docx VIP
- 山西省英语中考试题及解答参考(2025年).docx VIP
- 05系列建筑标准设计图集05J7-1内装修-墙面、楼地面(上_共二册).pdf VIP
- 语文高考现代文阅读训练试题及答案共50篇.pdf VIP
- 区域数字基础设施碳足迹评估模型构建.pdf VIP
- 2025年特许金融分析师权益投资组合管理策略专题试卷及解析.pdf VIP
原创力文档

文档评论(0)