软件设计师全套备考系列文章8 -- 查找、排序

2024-08-21 19:36

本文主要是介绍软件设计师全套备考系列文章8 -- 查找、排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

软考-- 软件设计师(8)-- 查找、排序


文章目录

  • 软考-- 软件设计师(8)-- 查找、排序
  • 前言
  • 一、查找
  • 二、排序
  • 三、排序的评价指标(重点)


前言

考试时间:每年5月、11月,软件设计师每年都会开考。
考试条件:三不限
考试形式: 一共两门上午--计算机于软件工程基本知识--150分钟--笔试--选择题--75分(45及格)下午--软件设计--150分钟--笔试--简答题(4道必做,1道二选一做)--75分(45及格)两门都得一次性及格才算通过。软件行业从事人员学习视频:https://www.bilibili.com/video/BV1Qc411G7fB?vd_source=d82c92f6c1fd8c6785c6b557a68cb7b3其他行业学习视频:https://www.bilibili.com/video/BV1LcYyeoEa5?vd_source=d82c92f6c1fd8c6785c6b557a68cb7b3由于本人从事软件开发4年,有一定的基础,所以本系列博客笔记皆从于第一个视频记录笔记。

一、查找

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、排序

基本概念

排序:重新排列表中的元素,使表中的元素满足按关键字有序的过程。
排序分为:稳定排序 和 不稳定排序(重要),内部排序 和 外部排序(不重要)ex:21(蓝),32,13,45,27,21(红),有以上一排数据,如果经过排序算法A排序后,21(蓝)仍然在21(红)之前,则算法A为稳定排序,否则算法A为不稳定排序。

在这里插入图片描述
在这里插入图片描述

希尔排序:增量d生成的规则,d1=n/2,d2=d1/2,d3=d2/2...能直接除尽则直接取,除不尽取奇数。ex:10/2=5,取5。5/2=2.5,取3,3/2=1.5取1下图解析:
1、d1=n/2=5,增量为5,则57和28对比,57>28,则57和28互换位置。68和96对比,68<96,则不用互换。重复下去得到第二列数据。
2、d2=d1/2=2.5,取最近的奇数,的d2=3,则第二列数据中,以28开始增量为3的数据为:28、24、96、72,将其排序并且插入到相应位置,
得到数据:24、68、33、28、19、57、72、59、52、96。第二列数据中以68开始增量为3的数据为:68、19、59,将其排序并且插入到相应
位置,得到数据:24、19、33、28、59、57、72、68、52、96。第二列数据中以33开始增量为3的数据为:33、57、52,将其排序并且插入
到相应位置,得到数据:24、19、33、28、59、52、72、68、57、96。得到第三列数据。
3、d3=d2/2=1.5,取最近的奇数,的d3=1,则第三列数据以增量为1,互相比较,若 前面 > 后面 则互换位置。

在这里插入图片描述

在这里插入图片描述

快速排序:取首元素作为枢纽pivot,其他元素和pivot对比,小于pivot的放于pivot左边,大于pivot的放于右边。一次操作后对pivot两边的数据重复递归此操作,直到排序全部完成。其实真正的操作是指针的互换,但是我们应试,直接理解成这样就可以了。ex:下图中,取57作为pivot,小于57放左边,大于57的放右边。一次操作后得到[19 24 33 52 28] 57 [96 72 59 68],再分别对两边的[19 24 33 52 28],[96 72 59 68]重复此操作,直到排序结束。

在这里插入图片描述

在这里插入图片描述

堆排序:小顶堆:堆顶位置的数据永远都是最小的数据,且各个子树的根节点 都小于 其叶子节点;大顶堆:堆顶位置的数据永远都是最大的数据,且各个子树的根节点 都大于 其叶子节点。

在这里插入图片描述

堆排序ex:
1.1:初始化建立堆;
1.2:从叶子节点的子树向上推,所以图1.2中,5、8、0中8最大,则交换5和8的位置;
1.3:从叶子节点的子树向上推,所以图1.3中,2、4、6中6最大,则交换4和6的位置;
1.4:继续推左子树,发现左子树接下来需要比较的树值为3、8、7,其中8最大,则交换3和8的位置;
1.5:经过1.4的操作后发现,左叶子节点最小子树3,5,0不满足大顶堆条件了,则需要对其重新排列,比较3、5、0,其中5最大,则交换3和5的位置;
1.6:现在发现左子树 和 右子树都满足大顶堆条件。只有根节点不满足。比较最大子树1、8、6,其中8最大,则交换1和8的位置;
1.7:经过1.4的操作后发现,左子树1,5,7不满足大顶堆条件了,则需要对其重新排列,比较1、5、7,其中7最大,则交换1和7的位置;
发现整个树各个子树都满足大顶堆条件,堆排序完成。

在这里插入图片描述

归并排序:把两个 或 多个已经**有序**的序列合并
ex:
1、合并[57 68][52 59] 和 [28 72][33 96] ,得到两个有序序列[52 57 59 68],[28 33 72 96];
2、合并[52 57 59 68]和 [28 33 72 96];

在这里插入图片描述

在这里插入图片描述

三、排序的评价指标(重点)

在这里插入图片描述

这篇关于软件设计师全套备考系列文章8 -- 查找、排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的