软件设计师全套备考系列文章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

相关文章

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

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

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Python中lambda排序的六种方法

《Python中lambda排序的六种方法》本文主要介绍了Python中使用lambda函数进行排序的六种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1.对单个变量进行排序2. 对多个变量进行排序3. 降序排列4. 单独降序1.对单个变量进行排序

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin