数据结构和算法——排序算法的比较和排序综测测验

news2024/10/4 23:42:48

目录

排序算法的比较

排序综合测验

快又稳定

元素错位

有序排序

排序结果


排序算法的比较

排序方法平均时间复杂度最坏情况下时间复杂度额外空间复杂度稳定性
简单选择排序O(N^2)O(N^2)O(1)不稳定
冒泡排序O(N^2)O(N^2)O(1)稳定
直接插入排序O(N^2)O(N^2)O(1)稳定
希尔排序O(N^d)O(N^2)O(1)不稳定
堆排序O(NlogN)O(NlogN)O(1)不稳定
快速排序O(NlogN)O(N^2)O(logN)不稳定
归并排序O(NlogN)O(NlogN)O(N)稳定
基数排序O(P(N+B))O(P(N+B))O(N+B)稳定

排序综合测验

快又稳定

请选择下面四种排序算法中最快又是稳定的排序算法:

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

选择C:归并排序

归并排序是一种分治算法,它将待排序的数组不断地分割成更小的子数组,然后将这些子数组合并成有序的数组。归并排序的时间复杂度是O(NlogN),其中N是待排序数组的长度。它是一种稳定的排序算法,即相等元素的相对顺序在排序后不会改变。

希尔排序、堆排序和快速排序都是不稳定的排序算法。

  1. 希尔排序(Shell Sort): 希尔排序是插入排序的一种改进版本。它通过将待排序的数组分割成若干个子序列,对这些子序列进行插入排序,然后逐渐缩小子序列的长度,直到整个数组有序。在希尔排序的过程中,相等元素之间的相对顺序可能会发生改变,因为每一趟排序涉及到不相邻的元素之间的交换。

  2. 堆排序(Heap Sort): 堆排序是利用堆这种数据结构来进行排序的算法。在堆排序中,首先将待排序的数组构建成一个最大堆(或最小堆),然后逐步取出堆顶元素(最大值或最小值),并进行调整维持堆的性质。由于堆的构建和调整过程涉及到交换元素,相等元素在交换过程中可能会改变其相对顺序。

  3. 快速排序(Quick Sort): 快速排序也是一种分治算法。它选择一个基准元素,将数组分成两个子数组,一个子数组的元素都比基准元素小,另一个子数组的元素都比基准元素大,然后递归地对这两个子数组进行排序。在快速排序的过程中,相等元素的相对顺序可能会发生改变,因为在分区的过程中,相等元素可能会被分到不同的子数组中。

在稳定的排序算法中,相等元素的相对顺序保持不变。而在这些不稳定的排序算法中,由于涉及到元素交换和分区操作,相等元素的相对顺序可能会发生变化。

 

元素错位

下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上

A. 堆排序 B. 插入排序 C. 冒泡排序 D. 快速排序

选择:B.插入排序

插入排序是一种稳定的排序算法,它通过构建有序序列,对于未排序的元素,逐个插入到已排序序列中的适当位置。在每一趟排序过程中,未排序的元素会逐渐移动到其最终的位置,但在最后一趟开始之前,所有的元素可能都还没有在其最终的位置上。例如:插入最后一个元素之前,需要将每个元素都错位,将每一个元素都往后移一位。

 

有序排序

当待排序列已经基本有序时,下面哪个排序算法效率最差

A. 快速排序 B. 直接插入 C. 选择排序 D. 堆排序

选择C:选择排序

选择排序的时间复杂度也是O(N^2),其中N是待排序序列的长度。选择排序的主要思想是每次从未排序的部分选择最小(或最大)的元素,并放置到已排序部分的末尾。在待排序列基本有序的情况下,选择排序的效率会非常低。即使序列已经基本有序,选择排序仍然需要花费大量的时间来查找最小元素的位置,然后进行交换。因此,选择排序在待排序序列基本有序的情况下,效率会明显下降。

看其他选项:

  • A. 快速排序:在平均情况下,其时间复杂度为O(NlogN)。当待排序序列基本有序时,快速排序的性能仍然较好。虽然在某些特殊情况下可能有较差的性能(如已经完全有序的序列),但其平均性能较好,通常情况下效率较高。
  • B. 直接插入排序:在待排序序列基本有序的情况下,只有少数几个元素位置不正确,插入排序只需要对这几个元素进行少量的比较和交换即可。
  • D. 堆排序:堆排序的时间复杂度为O(NlogN),在待排序序列基本有序的情况下,由于需要构建堆结构,其性能会略有下降,但相对于直接插入排序和选择排序,堆排序在效率上仍然相对较好。

排序结果

数据序列(3,2,4,9,8,11,6,20)只能是下列哪种排序算法的两趟排序结果

A. 冒泡排序 B. 插入排序 C. 选择排序 D. 快速排序

选择D :快速排序


end


学习自:MOOC数据结构——陈越、何钦铭

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/801095.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SCT2632——65V输出3A非同步整流DCDC转换器

SCT2632是一款3A降压转换器,具有宽输入电压,从4.2V到60V,集成了220mΩ高压侧MOSFET。SCT2632采用峰值电流模式控制,支持脉冲跳过调制(PSM),以帮助转换器在轻负载或待机状态下实现高效率条件。SC…

矿用人员定位系统在矿山事故预防中的效果评估

矿业行业的高风险和复杂环境使得采矿安全成为一项重要的挑战。为了保障矿工的安全并减少事故风险,矿用人员定位系统成为了关键技术之一。 在这篇文章中,华安联大便和大家各位朋友一起探讨矿用人员定位系统的重要性、工作原理、作用,并通过真…

Packet Tracer - 配置和验证 NTP

Packet Tracer - 配置和验证 NTP 地址分配表 设备 接口 IP 地址 子网掩码 N1 NIC 209.165.200.225 255.255.255.0 R1 G0/0 209.165.200.226 255.255.255.0 R2 G0/0 209.165.200.227 255.255.255.0 目标 在本练习中,您将在 R1 和 R2 中配置 NTP 以…

苍穹外卖day07——缓存菜品套餐+购物车功能实现

缓存菜品——需求设计与分析 问题说明 用户访问量过大带来的一个直接效果就是响应速度慢,使用体验下降。 实现思路 使用redis缓存菜品数据,减少数据库查询操作。 页面展示上基本就是同一个分类在同一页,所以key-value结构可以使用不同的分…

【SQL应知应会】表分区(二)• Oracle版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 分区表 • Oracle版 前言一、分区表1.什么是表分区…

富文本编辑器wangEditor初探

1、前言 现有的Quill比较简单,无法满足业务需求(例如SEO的图片属性编辑需求) Quill已经有比较长的时间没有更新了,虽然很灵活,但是官方demo都没有一个。 业务前期也没有这块的需求,也没有考虑到这块的扩展…

如何提高代码效率——时间复杂度与空间复杂度——【C语言】

当我们面对一个问题时,会有许多种解题思路。我们现在的计算机技术已经达到非常先进的地步,所以当我们用不同的方法对待问题时,时间差异不会很明显,内存差异我们一般在平常小问题时感受不到,所以我们不会去纠结程序的优…

基于ssm+mysql+html道路养护管理系统

基于ssmmysqlhtml道路养护管理系统 一、系统介绍二、功能展示1.道路信息管理2.损害类型信息管理3.损害类型信息管理4.评定等级信息管理5.日常巡查信息管理6.定期检查信息管理 四、获取源码 一、系统介绍 系统主要功能:道路信息管理、损害类型信息管理、评定等级信息…

VSCode SSH远程连接与删除

1.ubuntu设置 安装SSH服务并获取远程访问的IP地址 在Ubuntu系统中,“CtrlAltT”打开终端工具,执行如下命令安装SSH服务。 sudo apt-get install openssh-server如果安装失败则先安装依赖项。 2.VS Code 设置 2.1安装与设置Remote SSH 打开Windows系…

今天,我被二维码卷到了...

# 关注并星标腾讯云开发者# 每周4 | 鹅厂一线程序员,为你“试毒”新技术# 第1期 | 腾讯王锐:测评二维码艺术画生成体验 都说AI绘画来势汹汹,但论创意,还是人类玩得花🤫。下面这几张乍一看平平无奇、却在网上疯传的AI生…

rcu链表综合实践

基础知识 rcu-read copy update的缩写。和读写锁起到相同的效果。据说牛逼一点。对于我们普通程序员,要先学会使用,再探究其内部原理。 链表的数据结构: struct list_head {struct list_head *next, *prev; };还有一种:struct h…

自建纯内网iot平台服务,软硬件服务器全栈实践

基于以下几个考虑,自制硬件设备,mqtt内网服务器。 1.米家app不稳定,逻辑在云端或xiaomi中枢网关只支持少部分在本地计算。 2.监控homeassistant官方服务有大量数据交互。可能与hass安装小米账户有关。 3.硬件:原理图,l…

apifox 调用camunda engine-rest接口报错“type“: “NotFoundException“

官方文档在这: https://docs.camunda.org/rest/camunda-bpm-platform/7.19/ 现象 engine-rest本是可以直接请求的,我把openapi导入到apifox之中了,我测试一下接口没有能请求成功的,基本都报以下的错。 报错如下 {"type&qu…

【iOS】Frame与Bounds的区别详解

iOS的坐标系 iOS特有的坐标是,是在iOS坐标系的左上角为坐标原点,往右为X正方向,向下为Y正方向。 bounds和frame都是属于CGRect类型的结构体,系统的定义如下,包含一个CGPoint(起点)和一个CGSiz…

《向量数据库指南》:向量数据库Pinecone如何集成Haystack库

目录 安装Haystack库 初始化PineconeDocumentStore 数据准备 初始化检索器 检查文档和嵌入 初始化提取式问答管道 提问 在这个指南中,我们将看到如何集成Pinecone和流行的Haystack库进行问答。 安装Haystack库 我们首先安装最新版本的Haystack,其中包括PineconeDocum…

【爬虫案例】用Python爬取iPhone14的电商平台评论

用python爬取某电商网站的iPhone14评论数据, 爬取目标: 核心代码如下: 爬取到的5分好评: 爬取到的3分中评: 爬取到的1分差评: 所以说,用python开发爬虫真的很方面! 您好&…

Shell ❀ 一键配置Iptables规则脚本 (HW推荐)

文章目录 注意事项1. 地址列表填写规范2. 代码块3. 执行结果4. 地址与端口获取方法4.1 tcpdump抓包分析(推荐使用)4.2 TCP连接分析(仅能识别TCP连接) 注意事项 请务必按照格式填写具体参数,否则会影响到匹配规则的创建…

【腾讯云 Cloud Studio】构建基于 React 的实时聊天应用

关于腾讯云 Cloud Studio构建基于 Cloud Studio 的聊天应用(项目实战)1. 注册并登录 Cloud Studio2. 配置 Git 环境2.1 复制 SSH 公钥2.2 添加 SSH 公钥至 GIt 平台 3. 创建项目4. 项目开发4.1 安装依赖4.2 集成 tailwind css4.3 编写代码4.4 项目运行示…

windows中文界面乱码问题

我的便携是内部返修机,买来时就是英文版,在设置中改成简体中文就可以了,与中文版没有什么区别,已经升级成win11。windows自身的应用、360之类的界面都能正常显示,但是个别应用总是乱码,根据客服的提示设置一…

【lesson5】linux vim介绍及使用

文章目录 vim的基本介绍vim的基本操作vim常见的命令命令模式下的命令yypnyynpuctrlrGggnG$^wbh,j,k,lddnddnddp~shiftrrnrxnx 底行模式下的命令set nuset nonuvs 源文件wq!command(命令) vim配置解决无法使用sudo问题 vim的基本介绍 首先vim是linux下的…