Java数据结构与Java算法学习Day02---算法排序

news2024/11/18 16:43:30

目录

一、简单排序

1.1Comparable接口介绍 11

1.2冒泡排序 12、13、14

1.3选择排序 15、16、17

1.4插入排序 18、19、20

二、高级排序

2.1希尔排序 21、22、23

2.2归并排序 24

2.2.1递归 24

2.2.2归并排序 25

2.3快速排序 32

2.3.1快速排序的原理 32 

2.3.2快速排序API设计(代码实现)33

2.3.3快速排序的切分原理 (切分部分的原理) 34

2.3.4快速排序切分原理部分代码实现 35

2.3.5快速排序与归并排序的区别&&时间复杂度分析 36

2.4排序的稳定性 37


一、简单排序

1.1Comparable接口介绍 11

本部分参看ppt

下面的三种排序仅使用于少量的数据排序情况。

1.2冒泡排序 12、13、14

1.3选择排序 15、16、17

从数据中选出合适的数据,放到合适的位置。将符合要求的数据的索引和所设定位置处的索引进行交换。

1.4插入排序 18、19、20

相当于是倒叙的冒泡排序。

代码部分做出解释:其余部分参看PPT。 

最坏情况:就是后面的所有元素都需要与前面的数据进行比较与交换处理。

二、高级排序

2.1希尔排序 21、22、23

希尔排序是插入排序的优化版本。

希尔排序的原理: 

希尔排序的思路,如下例子所示: 

增长量h的确定:

希尔排序代码部分的实现:

参考PPt

排序代码:

外层for负责从第一个h开始处一步一步地往后移,内层for负责当前h所在组内元素的比较

希尔排序性能判断:

希尔排序性能不能采用事前分析法,因为涉及到数学的理解。所以采用事后分析法来对希尔排序性能进行判断。根据算法实际的跑的时间。实际测试跑试数据。

同插入排序进行比较,性能较好

性能测试部分代码实现:

2.2归并排序 24

2.2.1递归 24

含义:就是不断的调用自身算法

注意:递归不能无限的自身调用,会造成栈内存溢出,需要有边界条件来约束自身调用。

提示报错信息:

该错误问题是:栈内存溢出异常

2.2.2归并排序 25

原理:

 注:归并排序主要是再归并的过程中进行排序的。

其中最难的部分:分组后进行排序好的内容,再次合并的梳理:(参考PPT部分)28、29

 对应该部分融合部分代码实现:

本部分的代码部分参考ppt:对下面部分的理解。

 归并排序时间复杂度分析:30、31

注:最终归并排序的时间复杂度为O(nlogn)。比其他简单的排序性能高O(nlogn)。

 归并排序的缺点:

2.3快速排序 32

2.3.1快速排序的原理 32 

 快速排序:冒泡排序的升级。

主要的点:寻找分界值

1、寻找分界值:找排序的数据的第一个数字作为分界值。

 注:原理部分参考ppt。

2.3.2快速排序API设计(代码实现)33

和归并排序的设计类似。

2.3.3快速排序的切分原理 (切分部分的原理) 34

 

ppt切分原理如何查看:都只是移动了一步。 

2.3.4快速排序切分原理部分代码实现 35

参考ppt

2.3.5快速排序与归并排序的区别&&时间复杂度分析 36

快速排序与归并排序的区别: 

1、快速排序不需要归并的动作。规定排序则需要。

2、快速排序不需要等分,因为选取的第一个初始值不一行是数组的均等分的值;归并排序是进行等分的。

时间复杂度分析:

最优情况:

均等分。

最差情况:

逆序。

2.4排序的稳定性 37

不稳定:冒泡排序、希尔排序、快速排序

稳定:插入排序、归并排序

注:

1、一次排序的话:选择高性能排序

2、多次排序:选择稳定排序

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

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

相关文章

这可能是我见过最可爱的乒乓女孩了!

3D角色艺术家Carlos Sanz曾在U-tab学习动画,在CICE学习角色创作,现在正致力于创作她的作品集并成为3D动画行业的一员,本文是作者在ZBrush和Maya等软件中设计乒乓女孩角色造型的教程: 首先给大家做个自我介绍。我叫Carlos Sanz&am…

[附源码]计算机毕业设计springboot网上电影购票系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

(阅读笔记)急性卒中CT灌注分析在临床中的实际问题

(阅读笔记)急性卒中CT灌注分析在临床中的实际问题IntroductionUnderstanding the basics of CTP acquisition and processingCTP thresholds and quantificationPitfalls of perfusion imagingTechnical pitfallsPatient motionContrast bolusRadiationC…

CMMI和SPCA是一样的吗?有什么区别

CMMI资质相信有很多企业都了解了,对于SPCA可能有些企业是比较陌生的,不太了解什么是SPCA,简单来说可以理解为CMMI是国外的资质,而SPCA可以理解为国内的,那现在就跟随同邦信息科技的小编一起来看看具体的区别是哪些吧 C…

进程以及线程

目录 🐼今日良言:希望是生命的源泉,失去它生命就会枯萎。 🐯一、进程 🐕1.概念 🐕2.PCB 🐕3.进程调度 🐭二、线程 🐑1.概念 🐇三、进程和线程的联系和区别 &…

Qt实现抽奖程序

一、简介 该程序命名为Lucky,实现的功能如下: 1. 加载抽奖人员名单,并保存加载路径; 2. 单击左键或者点击ctrls开始抽奖,并滚动显示人员名单,显示的人员名单格式为 部门-姓名。 3. 单击左键或者点击ctrls…

了解并应用数字隔离器的安全限值

介绍 电流隔离在工业和汽车系统中很常见,作为防止高电压或抵消接地电位差的一种手段。设计人员传统上使用光耦合器进行隔离,但在过去几年中,使用电容和磁隔离的数字隔离器变得越来越流行。对于任何此类隔离器,了解其安全限值的重…

关于如何找环形链表的入环点

目录一、判断一个链表是否有环二、找到链表入环的第一个节点一、判断一个链表是否有环 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的…

菇多糖-聚乙二醇-大环配体NOTA,大环配体NOTA-PEG-香菇多糖

菇多糖-聚乙二醇-大环配体NOTA,大环配体NOTA-PEG-香菇多糖 中文名称:香菇多糖-大环配体NOTA 英文名称:Lentinan-NOTA 别称:NOTA修饰香菇多糖,NOTA-香菇多糖 PEG接枝修饰香菇多糖 Lentinan-PEG-NOTA 香菇多糖-聚乙…

设置Excel表格“只读模式”的两种方法

Excel表格的“只读模式”可以帮助我们防止意外更改表格,根据不同需求,表格可以设置“有密码”和“无密码”的两种“只读模式”,下面来说说具体设置方法。 一、无密码“只读模式” 如果主要是想防止自己意外修改了表格,可以设置没…

Jenkins拉分支代码 + tortoiseGit删除分支

日常部署测试代码都使用Jenkins代码手工上传代码,主要减减减减工作量,提高工作效率; 一、安装Git、git-parameter插件及配置方法,安装方法忽略一万字,解决不了绕道度娘问问 二、创建项目,设置参数 This pr…

[操作系统笔记]基本分页存储管理

内容系听课复习所做笔记,图例多来自课程截图 基本分页存储管理 两次访存,第一次查页表,第二次访问目标内存单元 将内存空间分为一个个大小相等的分区(比如每个分区4KB),每个分区就是一个“页框”&#xff0…

[附源码]计算机毕业设计springboot物业管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

澜沧古茶在港交所上市申请失效:收入不及八马茶业,股东提前套现

12月1日,贝多财经从港交所披露易了解到,普洱澜沧古茶股份有限公司(下称“澜沧古茶”)的上市申请材料失效,目前已无法正常查看或下载。据贝多财经了解,“失效”并不意味着上市失败。 事实上,招股…

selnium操作输入框无法输入内容

问题描述 分析问题 1、开始以为等待时间问题没有找到元素(没解决) 2、使用js操作元素(没解决) 3、定位到光标元素 4、种cookie直接走接口调用 问题描述 selenium.common.exceptions.ElementNotInteractableException: Mess…

企业数据图表- FineReport函数计算组成和语法概述

1. 概述 1.1 版本 1.2 功能简介 在设计模板时用户需要频繁的使用公式函数,例如:求和、求个数、做判断等等。 本文介绍函数的计算组成和语法。 2. 计算语法 2.1 概览 组成部分 语法 示例 函数 SUM(合同金额)、SUM(A1) 数据列 可输入有数据列的…

基于Vue+nodejs+Element-ui的聊天框项目

目录一、项目简介二、环境介绍三、系统展示四、视频功能展示五、前端核心代码展示六、MySQL 数据库创建功能展示七、node.js 核心代码八、总结一、项目简介 本项目基于纯前端(移动端)技术开发一个聊天系统,界面美观大方,采用Node…

PowerShell禁止运行脚本

运行脚本报错(pnpm -v) pnpm : 无法加载文件 D:\win11\program\NVM\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.mi crosoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1pnpm -v…

洛谷千题详解 | P1019 [NOIP2000 提高组] 单词接龙【C++、Java语言】

博主主页:Yu仙笙 专栏地址:洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析: C源码: Java源码: -----------------------------------------------------------------------------------------------…

java+mysql基于SSM共享型汽车租赁系统-计算机毕业设计

项目介绍 共享汽车租赁公司的共享汽车租赁流程复杂、数据庞大,往往一个疏忽就会给公司造成极大的损失,于是越来越多的共享汽车租赁公司需要一个对各项信息的管理平台来避免这样的损失。为了满足这个需求,我们开发一个针对共享汽车租赁信息的…