软考29-上午题-排序

news2024/11/27 13:01:17

一、排序的基本概念

1-1、稳定性

稳定性指的是相同的数据所在的位置经过排序后是否发生变化。若是排序后,次序不变,则是稳定的。

1-2、归位

每一趟排序能确定一个元素的最终位置。

1-3、内部排序

排序记录全部存放在内存中进行排序的过程。

1-4、外部排序

待排序记录的数量很大,以至于内存不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。

1-5、排序小结(要背)

比较最好时间复杂度,会发现,当待排序的序列基本有序的话,适合采用:

  • 直接插入排序
  • 希尔排序
  • 冒泡排序 

二、直接插入排序

稳定的 

不归位

三、希尔排序

直接插入排序的改进。

基本思想:现将整个待排记录序列分割成若干子序列,然后分别进行直接插入排序;待整个序列中的记录基本有序的时候,再对全体记录进行一次直接插入排序。

示例:

不稳定

不归位 

四、真题1

真题1:

真题2:

 真题3:

真题4:

五、简单选择排序

算法思想:从待排数组中找到最小值,再将最小值与已排好序的数组后一位进行交换。

归位

不稳定 

六、堆排序(简单了解) 

示例:

此时,根元素80是最大的元素,将根元素80和队列最后一个元素10交换,并将80脱离当前序列(归位),此时,新的二叉树不满足大顶堆的规则,则继续调整。

每次调整完得到的根节点都是当前序列的最大元素!!!

归位

不稳定

七、真题2

真题1:

 

真题2:

八、冒泡排序

基本思想:相邻两个元素,俩俩交换。

稳定

归位 

 

九、快速排序

快速排序首先选择了一个基准值,然后分别选择两个指针在数组中一个找大,一个找小,然后进行交换。

通过一趟排序将待排序的记录以基准值为分界,分为独立的两个部分,称为前半区和后半区;前半区均小于基准值,后半区均大于基准值。

然后再分别对这两个部分在进行快速排序,从而使得整个序列有序。

分治:分而治之。

归位

不稳定!!! 

纠错:空间时间复杂度是:O(log2n); 

十、真题2

真题1:

真题2:

真题3:

真题4:

十一、归并排序

示例:

 

设计方法:分治法

不归并

稳定

11-1、真题

真题1:

真题2:

 真题3:

真题4:

真题5:

真题6:

十二、排序小结

12-1、简单排序

1、直接插入排序(稳定)

2、冒泡排序(稳定)

3、简单选择排序(不稳定)

时间复杂度都是:O(n^2)

空间复杂度:O(1)

12-2、希尔排序(不稳定)

时间复杂度:O(n^1.3)

空间复杂度:O(1)

12-3、快速排序(不稳定)

分治思想

时间复杂度:O(nlog2n)——性能最好

空间时间复杂度:O(log2n)

但是,当待排序列基本有序的时候,是最坏的情况,时间复杂度退化为:O(n^2)

12-4、堆排序(不稳定)

时间复杂度:O(nlog2n)

空间时间复杂度:O(1)

12-5、归并排序(稳定)

俩俩归并,n/2向上取整

整个归并排序,需要进行log2n趟(向上取整)

空间复杂度:O(n)

时间复杂度:O(nlogn)

12-6、小结-稳定的排序

  • 直接插入排序;
  • 冒泡排序
  • 归并排序

12-7、真题

真题1:

真题2:

真题3:

直接插入排序:局部有序

冒泡:每一趟排序,都将最大的泡泡在最后的位置。

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

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

相关文章

白话微机:6.解释RTOS以及一些考研面试问题

一. 前言(总结世界观) 很久很久以前,有这样一个世界,这个世界有着现实世界一样的元素:那里的人又有一个别的名字叫做“数据”,人有0有1;人们也有住房,这些住房在这个世界叫做“存储器…

C++-opencv的imread、imshow、waitkey、namedWindow

在C中使用OpenCV时,imread和imshow是两个非常基础且常用的函数,用于读取图像和显示图像。以下是这两个函数的简要说明和如何一起使用它们的示例。 imread函数 imread用于从指定的文件路径读取图像。它将图像读入为cv::Mat对象,这是OpenCV中…

单机环境搭建Redis伪集群

1、Redis版本 [rootwsdhla ~]# redis-server -v Redis server v6.2.6 sha00000000:0 mallocjemalloc-5.1.0 bits64 buildbf23dac15dfc00fa[rootwsdhla ~]# redis-cli -v redis-cli 6.2.62、创建节点目录 创建6个节点目录,分别复制一份redis.conf并编辑&#xff1a…

关于Sora的一些紧迫问题...

OpenAI Sora 概述 OpenAI最新的创新,Sora,在人工智能领域开辟了新的天地。Sora是一个文本到视频的扩散模型,可以将文本描述转化为逼真的视频内容。它解决了一个重大的技术挑战,即在视频中保持主体的一致性,即使它们暂…

anomalib1.0学习纪实-续2:三个文件夹

为了读懂程序,有三个最重要的文件夹,如下图: 正好对应四个类,如下图: 四个类的来源如下图所示: 注意,MVTec是个大类,里面用到了这里的第四个类MVTecDataset,代码如下。…

Windows制作Ubuntu的U盘启动盘

概要: 本篇演示在Windows10中制作Ubuntu22.04的U盘启动盘 一、下载Ubuntu22.04的iso文件 在浏览器中输入https://ubuntu.com去Ubuntu官网下载Ubuntu22.04的iso文件 二、下载Ultraiso 在浏览器中输入https://www.ultraiso.com进入ultraiso官网 点击FREE TRIAL&a…

设计模式复习

单例模式 确保一个类最多只有一个实例,并提供一个全局访问点。 (某个类的对象有且仅有一个,单例的对象充当的是全局变量的角色,为什么在C里面不直接使用全局变量,而是使用单例来代替全局变量,因为如果直接…

07 按键控制 LED

按键简介 按键开关是一种电子开关,属于电子元器件类。常见的按键开关有两种,第一种是轻触式按键开关(简称轻触开关),使用时以向开关的操作方向施加压力使内部电路闭合接通,当撤销压力时开关断开&#xff0…

html的表单标签(上):form标签和input标签

表单标签 表单是让用户输入信息的重要途径。 用表单标签来完成与服务器的一次交互,比如你登录QQ账号时的场景。 表单分成两个部分: 表单域:包含表单元素的区域,用form标签来表示。表单控件:输入框,提交按…

48 slab 的实现

前言 这里说的是 内核中分配小对象的一种内存分配方式 slab 呵呵 经典程度不必多说了, 内核使用的大多数数据结构 基本上是基于 slab 进行内存分配的 这里 我们来看一下 slab 如何分配对象 几个分配层级, c->free_list, c->page, c->partial, new_slab 1. 先…

【HarmonyOS】【DevEco ohpm ERROR: NOTFOUND package “@ohos/hypium“如何解决

参考 :(无效) 华为开发者论坛 DevEco创建项目时的错误解决_6 月 优质更文活动_路北路陈_InfoQ写作社区 解决: HormonyOS-DevEco Studio新建空项目ERROR解决_oh_modules\ohos\hypium-CSDN博客 将 .ohpm文件夹中的hypium文件夹复…

Openharmony - HDF驱动小示例和测试程序

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 1. 创建KHDF示例驱动1.1. 创建KHDF项目1.2. HDF驱动程序实现1.2.1. 驱动入口1.2.2. 实现Dispatch方法1.2.3. 硬件业务初始化与释放1.2…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第10章 项目进度管理(六)

博主2023年11月通过了信息系统项目管理的考试,考试过程中发现考试的内容全部是教材中的内容,非常符合我学习的思路,因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家,希望更多的人能够通过考试&a…

Flink Catalog 解读与同步 Hudi 表元数据的最佳实践

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

python-Scrapy框架入门1111111111111

此网站爬取江南大学官网新闻信息 https://news.jiangnan.edu.cn/yw.htm Scrapy安装 mac | Linux : pip install scrapy windows: pip install wheelpip install pywin32安装Twisted : pip install Twisted_iocpsupport-1.0.2-cp310-cp310-win_amd64.whl (该文件去…

使用Nginx或者Fiddler快速代理调试

1 背景问题 在分析业务系统程序问题时,存在服务系统环境是其它部门或者其它小组搭建或运维的,并且现在微服务时代,服务多且复杂,在个人机器上搭建起如此环境,要么费事费力,要么不具备充足条件。 急需有一种方法或者工具可以快速辅助调试定位分析问题。本文下面介绍代理方…

算法沉淀——多源 BFS(leetcode真题剖析)

算法沉淀——多源 BFS(leetcode真题剖析) 01.矩阵02.飞地的数量03.地图中的最高点04.地图分析 多源 BFS 是指从多个源点同时进行广度优先搜索的算法。在传统的 BFS 中,我们通常从一个起始点开始,逐层遍历所有的相邻节点。而在多…

IDEA-常用插件

1、Mybatis Log Free 当我们使用mybatis log在控制台输出sql 内容,输出内容将语句与参数分开打印,还需要手动将参数替换到指定位置。 使用对应插件后,自动将输出内容组装成完整的可直接执行的SQL 在插件市场 查看对应名称,并安装。…

KMPC++(Acwing)

代码&#xff1a; #include <iostream>using namespace std;const int N 100010, M 1000010;int n, m; int ne[N]; char s[M], p[N];int main() {cin >> n >> p 1 >> m >> s 1;for (int i 2, j 0; i < n; i ){while (j && p[…

Academic Inquiry|投稿状态分享(ACS,Wiley,RSC,Elsevier,MDPI,Springer Nature出版社)

作为科研人员&#xff0c;我们经常会面临着向学术期刊投稿的问题。一般来说&#xff0c;期刊的投稿状态会在官方网站上进行公示&#xff0c;我们可以通过期刊的官方网站或者投稿系统查询到我们投稿的论文的状态&#xff0c;对于不同的期刊在投稿系统中会有不同的显示。 说明&am…