文章目录

  • 3.排序算法复杂度及稳定性分析
  • 4.选择题练习
    • 1. 快速排序算法是基于( )的一个排序算法。
    • 2.对记录(54,38,96,23,15,72,60,45,83)进行从小到大的直接插入排序时,当把第8个记录45插入到有序表时,为找到插入位置需比较( )次?(采用从后往前比较)
    • 3.以下排序方式中占用O(n)辅助存储空间的是
    • 4.下列排序算法中稳定且时间复杂度为O(n2)的是( )
    • 5.关于排序,下面说法不正确的是
    • 6.下列排序法中,最坏情况下时间复杂度最小的是( )
    • 7.设一组初始记录关键字序列为(65,56,72,99,86,25,34,66),则以第一个关键字65为基准而得到的一趟快速排序结果是()
    • 8.在待排序数据已有序时,花费时间反而最多的是( )排序。
    • 9.下面的排序算法中,初始数据集的排列顺序对算法的性能无影响的有( )

3.排序算法复杂度及稳定性分析

稳定性
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的

例子:
6 3 5 4 5 9 1
两个相同的值,如果排序之后红色的5依旧在蓝色的5前面,就是保证相对顺序不变,这就是稳定。

但稳定性只有在整型排序结构体中是有意义的

时间最坏 时间最好 空间 稳定性
直接插入排序 O(N^2) O(N) O(1)
希尔排序 平均:O(N^1.3) 平均:O(N^1.3) O(1) ×
选择排序 O(N^2) O(N^2) O(1) ×
堆排序 O(N*logN) O(N*logN) O(1) ×
冒泡排序 O(N^2) O(N) O(1)
快速排序 O(N^2) O(N*logN) O(logN) ×
归并排序 O(N*logN) O(N*logN) O(1)

希尔排序为什么不稳定
因为预排的时候,相同的数据可能会被分到不同组里面去了

内部排序:数据元素全部放在内存中的排序。(以上说过的排序方法)
外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。(硬盘中)
归并不需要占用内存

4.选择题练习

1. 快速排序算法是基于( )的一个排序算法。

A分治法
B贪心法
C递归法
D动态规划法

将区间按照基准值划分为左右两半部分,然后再进行排序。所以是分而治之。

2.对记录(54,38,96,23,15,72,60,45,83)进行从小到大的直接插入排序时,当把第8个记录45插入到有序表时,为找到插入位置需比较( )次?(采用从后往前比较)

A 3
B 4
C 5
D 6

用直接插入的思想写一下思路,一开始没排到的数就先不写出来,以免混淆
38 54
38 54 96
23 38 54 96
15 23 38 54 96
15 23 38 54 72 96
15 23 38 54 60 72 96 此时45需要和这五个数进行对比,最后才发现比38大,比54小所以插入38与54之间

3.以下排序方式中占用O(n)辅助存储空间的是

A 简单排序
B 快速排序
C 堆排序
D 归并排序

需要先malloc一个第三方区间进行归并,之后会进行释放

4.下列排序算法中稳定且时间复杂度为O(n2)的是( )

A 快速排序
B 冒泡排序
C 直接选择排序
D 归并排序

还有直接插入排序

5.关于排序,下面说法不正确的是

A 快排时间复杂度为O(N*logN),空间复杂度为O(logN)
B 归并排序是一种稳定的排序,堆排序和快排均不稳定
C 序列基本有序时,快排退化成冒泡排序,直接插入排序最快
D 归并排序空间复杂度为O(N), 堆排序空间复杂度的为O(logN)

两个都应该是O(N^logN)

6.下列排序法中,最坏情况下时间复杂度最小的是( )

A 堆排序
B 快速排序
C 希尔排序
D 冒泡排序

堆排序 O(NlogN)
快速排序O(N^2)
希尔排序O(N
1.3)
冒泡排序O(N^2)

7.设一组初始记录关键字序列为(65,56,72,99,86,25,34,66),则以第一个关键字65为基准而得到的一趟快速排序结果是()

A 34,56,25,65,86,99,72,66
B 25,34,56,65,99,86,72,66
C 34,56,25,65,66,99,86,72
D 34,56,25,65,99,86,72,66

8.在待排序数据已有序时,花费时间反而最多的是( )排序。

A.堆排序
B.归并排序
C.希尔排序
D.快速排序

次序列接近有序,所以如果是插入排序,时间复杂度逼近O(n)
快排: 逼近O(n^2)
归并和堆排仍然是nlogn

9.下面的排序算法中,初始数据集的排列顺序对算法的性能无影响的有( )

① 快速排序

② 希尔怕徐

③ 插入排序

④ 堆排序

⑤ 归并排序

⑥ 选择排序

A.①④⑤
B.④⑤⑥
C.②③⑥
D.②③⑤⑥

快排: 初始顺序影响较大,有序是,性能最差
插入: 接近有序,性能最好
希尔:希尔是对插入排序的优化,这种优化是在无序的序列中才有明显的效果,如果序列接近有序,反而是插入最优。
堆排,归并,选择对初始顺序不敏感

啃下大骨头——排序(三)相关推荐

  1. 啃下大骨头——排序(二)

    文章目录 2.3 交换排序 2.3.1冒泡排序 2.3.2 快速排序 2.3.2 快速排序优化 2.3.2 快速排序非递归 2.4 归并排序 2.5 非比较排序 2.3 交换排序 基本思想:所谓交换, ...

  2. 啃Docker大骨头所必备的基础理论

    啃Docker大骨头所必备的基础理论 前言 一:Docker概述 1.1:Docker是什么? 1.2:Docker的使用场景 1.3:Docker容器与传统虚拟机的比较 1.4:Docker引擎(D ...

  3. 在AI创新赛道啃下最硬的骨头:中科凡语抢滩NLP蓝海

    文丨智能相对论 作者丨叶远风 自然语言处理(NLP),人工智能皇冠上的"明珠",由于各个底层算法和技术模块都与业务场景的业务逻辑.数据特点高度捆绑,每一个领域.每一个业务场景都需要 ...

  4. 十大经典排序算法(下)

    请查看相关文章:十大经典排序算法(上) 快速排序(Quick Sort) 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分 ...

  5. 啃下这三块最难啃的硬骨头,你将在嵌入式C语言中大放异彩

    啃下这三块最难啃的硬骨头,你将在嵌入式C语言中大放异彩 C语言在嵌入式学习中是必备的知识,审核大部分操作都要围绕C语言进行,而其中有三块"难啃的硬骨头"几乎是公认级别的. ///插 ...

  6. 《spark技术应用》课程期末考试大作业报告,使用eclipse完成求top值、文件排序、二次排序三个程序的个性化开发。

    ​​​​目录 一.选题的目的及要求... 4 二.设计思路... 4 三.主要内容及关键技术.. 5 四.制作步骤... 5 1.准备工作... 5 1.1在VMware中安装一台Ubuntu64位系 ...

  7. 十大经典排序算法详解(三)-堆排序,计数排序,桶排序,基数排序

    养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 十大经典排序算法-堆排序,计数排序,桶排序,基数排序 前言 这是十大经典排序算法详解的最后一篇了. ...

  8. Nwafu-OJ-1411 Problem J C语言实习题二——5.按从大到小排序三个数

    问题 J: C语言实习题二--5.按从大到小排序三个数 时间限制: 1 Sec  内存限制: 128 MB 题目描述 从键盘输入三个数,将它们按从大到小进行排序,然后输出. 输入 输入三个数. 输出 ...

  9. 十大经典排序算法动画与解析,看我就够了

    作者 | 程序员小吴 转载自五分钟学算法(ID: CXYxiaowu) 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序.内部排序是数据记录在内存中进行 ...

最新文章

  1. 信号与系统2021年期末考试命题
  2. java正则表达式所有字符串_java正则表达式获取字符串中所有匹配的内容
  3. open pwrite
  4. JZOJ5944信标
  5. 网络基础2-3(TCP协议,三次握手,四次挥手,TIME_WAIT状态的作用,TCP如何保证可靠传输,TCP连接中状态转化,滑动窗口,流量控制,快速重传,拥塞窗口,延迟应答,捎带应答,粘包问题)
  6. matlab时域转换成频域_从时域到频域,你只需要旋转一下!
  7. 2018.09.28python学习第十三天part2
  8. Java工作笔记-AJAX实现整体不变,局部更新(与整体刷新比较)
  9. php增加mysql索引_mysql怎么添加索引
  10. 麦吉尔大学 计算机科学和阿尔伯特,阿尔伯特大学怎么样?
  11. python界面-python 可视化界面
  12. gsonformat java代码_GSONFormat的简单使用
  13. 关于FTP的两种连接模式
  14. THREE.JS 导入STL格式的模型
  15. 内网DNS重要使用作用
  16. python使用pip
  17. 聊聊另外一个Druid(很全)
  18. 王者服务器维护8月四日,王者荣耀体验服弈星重做上线 8月4日停机更新
  19. matlab 电压矢量开关,解析电压空间矢量研究及Matlab仿真
  20. 航海世纪服务器维护中,航海世纪2月28日例行维护公告

热门文章

  1. 进来学习,这个拿墨刀产品素材设计大赛万元大奖的原型设计超强
  2. 2019年大概率成为新零售的“前置仓”年
  3. 【Vue】动态添加组件的两种实现
  4. 2022中国大学python语言程序设计测试五答案(北理工嵩天 、黄天羽 、礼欣)
  5. LCP创建bond接口
  6. 6个可以改变一生的宝藏APP,他坚持学习了3年,如今月薪涨到5万
  7. 单选框使用removeAttr清除选中状态后再使用attr无法赋予选中状态
  8. 2022虎年姓氏头像微信小程序源码+文字变音+喝酒娱乐多功能小程序源码
  9. 模型部署——融合BN和Conv层
  10. 第九讲:工厂管理流程 (生管部)(转载)