



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、(1) 冒泡排序冒泡排序就是把小的元素往前调或者把大的元素往后调。 比较是相邻的两个元素比较, 交换也发生在这两个元素之间。 所以相同元素的前后顺序并没有改变, 所以冒泡排序是一种 稳定 排序算法。(2) 选择排序选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的。例子说明好多了。序列 5 8 5 2 9, 我们知道第一遍选择第 1个元素 5会和 2 交换,那么原序 列中 2个 5的相对前后顺序就被破坏了, 所以选择排序 不稳定 的排序算法。(3) 插入排序 插入排序是在一个已经有序的小序列的基础上,一次插入一个元素。比较是从有序序列的末尾开始, 也就是想要插入的元素和已经有序
2、的最大者开始比起, 如果比它大则直接插入 在其后面, 否则一直往前找直到找到它该插入的位置。 如果和插入元素相等, 那么插入元素 把想插入的元素放在相等元素的后面。 所以, 相等元素的前后顺序没有改变。 所以插入排序 是 稳定 的。(4) 快速排序快速排序有两个方向,左边的 i 下标一直往右走(往后),当 ai <= acenter_index , 其中center_index是中枢元素的数组下标,一般取为数组第0个元素。而右边的j下标一直往左走(往前),当 aj > acenter_index 。如果 i 和 j 都走不动了, i <= j, 交换 ai 和 aj, 重复上
3、面的过程, 直到i>j。交换aj和acenter_index,完成一趟快速排序。在中枢元素和aj交换的时候,很有可能把前面的元素的稳定性打乱,比如序列为5 3 3 4 3 8 9 10 11 ,现在中枢元素 5和 3(第 5个元素,下标从 1 开始计)交换就会把元素 3的稳定性打乱,所以快 速排序是一个不稳定的排序算法。(不稳定发生在中枢元素和aj交换的时刻)(5) 归并排序归并排序是把序列递归地分成短序列,递归出口是短序列只有1 个元素 (认为直接有序 )或者 2 个序列 (1 次比较和交换 ),然后把各个有序的段序列合并成一个有序的长序列。不断合并直到原序列全部排好序。相等时不发生交
4、换。所以,归并排序也是稳定的排序算法。(6) 基数排序基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到 最高位。有时候有些属性是有优先级顺序的, 先按低优先级排序, 再按高优先级排序, 最后 的次序就是高优先级高的在前, 高优先级相同的低优先级高的在前。 基数排序基于分别排序, 分别收集,所以其是 稳定的排序算法。(7) 希尔排序 (shell)希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,步长最大, 所以插入排序的元素个数很少, 速度很快;当元素基本有序了,步长很小, 插入排序对于有 序的序列效率很高。所以,希尔排序的时间复杂度会比o(n
5、A2)好一些。由于多次插入排序,我们知道一次插入排序是稳定的, 不会改变相同元素的相对顺序, 但在不同的插入排序过程 中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以shell 排序是不稳定 的。(8) 堆排序我们知道堆的结构是节点 i 的孩子为 2*i 和 2*i+1 节点,大顶堆要求父节点大于等于其 2 个子节点, 小顶堆要求父节点小于等于其 2 个子节点。 在一个长为 n 的序列, 堆排序的过程 是从第 n/2 开始和其子节点共 3 个值选择最大 (大顶堆 )或者最小 (小顶堆 ),这 3 个元素之间的 选择当然不会破坏稳定性。 但当为 n/2-1, n/2-2,
6、.1 这些个父节点选择元素时, 就会破坏稳定一、排序排序法平均时间最差情形稳定度冒泡0(n2)0(n2)交换0(n2)0(n2)选择0(n2)0(n2)插入O(nj20(n )排序时较好Shell0( nlogn)s0(n ) 1<s<2不稳定快速0( nlogn)0(n2)归并0( nlogn)0( nlog n)稳定堆0( nlogn)0( nlogn)不稳定基数0(log rB)0(log rB)稳定不稳定的排序算法额外空间备注稳定0(1)n小时较好不稳定0(1)n小时较好不稳定0(1)n小时较好稳定0(1)大部分已0(1)s是所选分组不稳定O(nlogn)n大时较好0(1)
7、n大时较好0(1)n大时较好0(n)B是真数(0-9),R是基数(个十百)性。有可能第n/2个父节点交换把后面一个元素交换过去了,而第n/2-1个父节点把后面一所以,堆排序是个相同的元素没有交换, 那么这2个相同的元素之间的稳定性就被破坏了。二、查找二分法平均查找效率是O(logn),但是需要数组是排序的。如果没有排过序,就只好先用0(nlogn)的预处理为它排个序了。而且它的插入比较困难,经常需要移动整个数组,所以动 态的情况下比较慢。哈希查找理想的插入和查找效率是0(1),但条件是需要找到一个良好的散列函数,使得分配较为平均。另外,哈希表需要较大的空间,至少要比0(n)大几倍,否则产生冲突
8、的概率很高。二叉排序树查找也是 O(logn)的,关键是插入值时需要做一些处理使得它较为平衡(否则容 易出现轻重的不平衡,查找效率最坏会降到0(n),而且写起来稍微麻烦一些,具体的算法你可以随便找一本介绍数据结构的书看看。当然,如果你用的是c语言,直接利用它的库类型map multimap就可以了,它是用红黑树实现的,理论上插入、查找时间都是O(logn),很方便,不过一般会比自己实现的二叉平衡树稍微慢一些。三树图克鲁斯卡尔算法的时间复杂度为0 (eloge)普里姆算法的时间复杂度为0 (n2)迪杰斯特拉算法的时间复杂度为0 (n2)拓扑排序算法的时间复杂度为 0 (n+e) 关键路径算法的时间复杂度为 0 (n+e)8. 从具有 n 个结点的二叉排序树中查找一个元素时,在平均情况下的时间复杂度大致为 ( c ) 。A. O(n) B. O(1) C. O(log2n)D. O(n2)9. 从具有 n 个结点的二叉排序树中查找一个元素时,在最坏情况下的时间复杂度为 ( a ) 。A. O(n) B. O(1) C. O(log2n)D. O(n2)2.根据 n 个元素建立一棵二叉排序树,其时间复杂度大致为(b)2A. O(n) B. O(n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甘肃政法大学《工程应用软件》2023-2024学年第二学期期末试卷
- 重庆资源与环境保护职业学院《国际商务综合模拟与实训》2023-2024学年第二学期期末试卷
- 衡阳师范学院《小学教师课堂教学技能训练》2023-2024学年第二学期期末试卷
- 广西职业技术学院《趣说HR》2023-2024学年第二学期期末试卷
- 湖南女子学院《测试技术与传感器》2023-2024学年第二学期期末试卷
- 濮阳科技职业学院《工程经济与建设项目管理》2023-2024学年第二学期期末试卷
- 吉利学院《制药过程自动化技术实验》2023-2024学年第二学期期末试卷
- 大连汽车职业技术学院《媒介综合设计》2023-2024学年第二学期期末试卷
- 兰考三农职业学院《急危重症护理学实训》2023-2024学年第二学期期末试卷
- 宾馆客房促销活动方案
- DB37∕T 5118-2018 市政工程资料管理标准
- 无机材料科学基础-第3章-晶体结构与晶体中的缺陷
- 油水井管理及动态分析.
- 米往返接力跑教案
- 银行评估明细表
- 水稻脱粒机毕业设计毕业设计
- 《光学原理与应用》之双折射原理及应用
- 完整版电力工程设计资质分级标准
- 硬笔书法练习用纸A4打印模板
- 中国民用航空通信导航监视系统运行、维护规程
- 5000吨干货船设计总体方案及第三部分
评论
0/150
提交评论