数据结构和算法-插入排序(算法效率 折半优化 顺序表与链表插入排序 代码实现)

news2024/11/19 3:26:02

文章目录

  • 插入排序
  • 算法实现
  • 算法效率分析
  • 优化-折半插入排序
  • 代码实现
  • 对链表进行插入排序
  • 小结

插入排序


首先49当作第一个已经排好序得元素,将第二个元素与前面得元素对比,发现小于49,于是49移动位置
在这里插入图片描述
在这里插入图片描述
此时将65与之前元素对比,发现其最大,位置不变
在这里插入图片描述
97同65处理一样
在这里插入图片描述
此时76小于97,97移动位置,然后再与前面元素比对,发现大于,此时不动
在这里插入图片描述
在这里插入图片描述
此时13最小,每次与之前元素比对都是小于,都会移动位置
在这里插入图片描述
此时比对移动直到13才大于
在这里插入图片描述
在这里插入图片描述
49与之前比对,此时大于才移动,等于小于都不移动,这样保证稳定性
在这里插入图片描述

算法实现

此时循环n次,每次将第i个元素与前i-1个元素比对,如果发现元素大于第i个元素就将该元素右移一位
在这里插入图片描述
从一开始存储,0当作哨兵,当作当前第i个元素
在这里插入图片描述

算法效率分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最好时间复杂度和最坏时间复杂度之和除2来算平均时间复杂度,一般和最坏时间复杂度一样
在这里插入图片描述

优化-折半插入排序

0位置为前i-1个元素都要比对的元素,55发现大于mid,此时low=mid+1
在这里插入图片描述
此时55小于70,high=mid-1
在这里插入图片描述
此时high mid low都相等
在这里插入图片描述
接着55小于60,low=mid+1,此时low大于high,此时low的元素大于55,而high的元素小于55
在这里插入图片描述
插入60
在这里插入图片描述
此时发现mid=60,为了保证稳定性,此时不会停止在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
插入90,最终low大于high时
在这里插入图片描述
插入10,最终low大于high时
在这里插入图片描述

代码实现

此时相同也要low=mid+1
high+1=low当最后low大于high时
在这里插入图片描述

对链表进行插入排序

折半查找对于链表无法实现
比对次数没变
在这里插入图片描述

小结

在这里插入图片描述

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

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

相关文章

【C++期末编程题题库】代码+详解18道

适合期末复习c看,或者刚入门c的小白看,有的题会补充知识点,期末复习题的代码一般比较简单,所以语法上没那么严谨。本文所有题目要求全在代码块的最上面。 目录 1、设计复数类 2、设计Computer类 3、实现相加的函数模板 4、圆类…

全网最简单vscode使用Makefile调试多文件的C/C++代码

前言 vscode调试C/C教程很多&#xff0c;操作麻烦&#xff0c;这里试图找到一个最简单的使用vscode调试C/C代码的方法。这里是使用Makefile的多文件方式。 测试文件 tree . ├── func.c ├── func.h ├── main.c └── Makefilefun.c #include <stdio.h> #in…

对低效的会议说“不!”

根据微软对全球 31, 000 名员工开展的一项调查&#xff0c;低效的会议是影响工作效率的第一大干扰因素&#xff0c;其次是召开过多的会议。 大大小小的同步会、讨论会、审查会、复盘会不仅将工作时间拆解得支离破碎&#xff0c;还会让成员因「会议恢复综合症」而无法立即从无效…

Certum与Geotrust的OV多域名证书

Certum和Geotrust都是知名的CA认证机构&#xff0c;旗下的SSL证书产品丰富&#xff0c;有单域名SSL证书、多域名SSL证书以及通配符SSL证书。这些SSL数字证书作为一种重要的网络安全产品&#xff0c;能够实现数据加密和身份验证&#xff0c;保障网站的安全性和隐私性。OV多域名S…

【快速全面掌握 WAMPServer】14.各种组件的升级方法

网管小贾 / sysadm.cc WAMPServer 更新很快&#xff0c;这是件好事&#xff01; 但是 WAMPServer 更新快是因为他很勤劳吗&#xff1f; 其实这个问题的原因并不是出自 WAMPServer 自身&#xff0c;而是来自它的各个组件。 是的&#xff0c;你能想像得到&#xff0c;比如 PHP…

数据结构和算法-数据结构的基本概念和三要素和数据类型和抽象数据类型

文章目录 总览数据结构的基本概念总览数据早期和现代的计算机处理的数据数据元素-描述一个个体数据对象-一类数据元素什么是数据结构小结 数据结构的三要素总览逻辑结构-集合结构逻辑结构-线性结构逻辑结构-树形结构逻辑结构-图形结构逻辑结构-小结数据的运算物理结构&#xff…

Struts2 远程代码执行漏洞S2-001分析

自 Struts2 在 2007 年爆出第一个远程代码执行漏洞 S2-001 以来&#xff0c;在其后续的发展过程中不断爆出更多而且危害更大的远程代码执行漏洞&#xff0c;而造成 Struts2 这么多 RCE 漏洞的主要原因就是 OGNL 表达式。这里以 Struts2 的第一个漏洞 S2-001 为例来对 Struts2 远…

新年启新程 | 开门红!菊风中标重庆三峡银行双录及产品销售可回溯系统项目

INTRODUCTION 近年来&#xff0c;随着人们需求的转变和金融科技的高速发展&#xff0c;银行开始朝着数智化方向转型。为顺应客户行为变迁&#xff0c;银行同业积极构建远程银行云服务生态。同时&#xff0c;面对业务的升级以及新的监管要求&#xff0c;现有音视频功能难以满足…

第三届先进控制、自动化与机器人国际会议(ICACAR 2024) | Ei、Scopus双检索

会议简介 Brief Introduction 2024年第三届先进控制、自动化与机器人国际会议(ICACAR 2024) 会议时间&#xff1a;2024年5月24-26日 召开地点&#xff1a;中国重庆 大会官网&#xff1a;ICACAR 2024-2024 3rd International Conference on Advanced Control, Automation and Ro…

yolov8 tracking编码为web 和 rtsp流输出

1 基础工作 打开cmd 输入 conda env list 输入 conda activate py38 查看 nvidia-smi 查看 nvcc&#xff0c;如下图所示 cuda为11.7 &#xff0c;为确认可以查看program files 下面的cuda 安装&#xff0c;看到11.7 就行了&#xff0c;读者可以自行确认自己的版本。 查看nvid…

第 378 场 LeetCode 周赛题解

A 检查按位或是否存在尾随零 枚举&#xff1a;枚举两个元素的组合即可 class Solution { public:bool hasTrailingZeros(vector<int> &nums) {int n nums.size();for (int i 0; i < n; i)for (int j 0; j < i; j)if ((nums[i] | nums[j]) % 2 0)return tru…

无痛迁移:图解 Kubernetes 集群升级步骤

本文探究了Kubeadm集群升级工作流程&#xff0c;并以可视化方式展现。着重介绍了控制平面节点和工作节点的升级步骤&#xff0c;涵盖了kubeadm升级、节点清空、kubelet和kubectl升级&#xff0c;以及解除节点封锁的关键步骤。 这个简明扼要的指南可帮助用户理解和执行Kubernete…

视频号掀起内容新风向,这几类账号为何爆红?

12月初&#xff0c;视频号就迎来了好消息&#xff0c;官方发布消息称&#xff0c;视频号作者加入互选的门槛由10000粉调整为5000粉&#xff0c;其他条件不变。此举旨在激励更多创作者积极投入视频内容创作&#xff0c;从而获得更多商业合作的机会和收益。 为帮助大家更好地洞察…

lf 的年终总结(2023)

这一年&#xff0c; 我没有进行总结&#xff0c; 只有年终的回顾。 是的&#xff0c; 我又长了一岁&#xff0c; 同时也度过了三年的开发经历&#xff0c; 即将进入五年 Android 开发的阶段。 我只希望在新的一年里能够好好学习&#xff0c;期待有所提升。 回顾过去的生活&…

51单片机四位数码管计算器 Proteus仿真程序

目录 概要 仿真图 部分代码 资料下载地址&#xff1a;51单片机四位数码管计算器 Proteus仿真程序 概要 1.系统通过4x4的矩阵键盘输入数字及运算符。 2.可以进行4位十进制数以内的加法运算&#xff0c;如果计算结果超过4位十进制数&#xff0c;则屏幕显示E 3.可以进行加法以外…

工作中人员离岗识别摄像机

工作中人员离岗识别摄像机是一种基于人工智能技术的智能监控设备&#xff0c;能够实时识别员工离岗状态并进行记录。这种摄像机通常配备了高清摄像头、深度学习算法和数据处理系统&#xff0c;可以精准地监测员工的行为&#xff0c;提高企业的管理效率和安全性。 工作中人员离岗…

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解

什么是Harbor&#xff1f;Harbor 是一个开源的企业级容器镜像仓库&#xff0c;它提供了安全、可靠、高效的镜像管理和分发功能。 Harbor 支持 Docker 镜像和 Helm Chart&#xff0c;可以与其他云原生工具和平台集成&#xff0c;如 Kubernetes、Docker Swarm 等。 使用 Harbor&a…

多线程和JVM

一&#xff0c;多线程实现的四种方式 1. 实现Runnable接口 普通实现&#xff1a; public class MyRunnable implements Runnable {Overridepublic void run() {System.out.println("线程执行中...");} }public class Main {public static void main(String[] arg…

CSS基本知识

文章目录 1. CSS 是什么2. 基本语法规范3. 引入方式3.1 内部样式表3.2 行内样式表3.3 外部样式 4. 选择器4.1 选择器的功能4.2 选择器的种类4.3 基础选择器4.3.1 标签选择器4.3.2 类选择器4.3.3 id 选择器4.3.4 通配符选择器 4.4 复合选择器4.4.1 后代选择器4.4.2 伪类选择器 5…

Flink Connector 开发

Flink Streaming Connector Flink是新一代流批统一的计算引擎&#xff0c;它需要从不同的第三方存储引擎中把数据读过来&#xff0c;进行处理&#xff0c;然后再写出到另外的存储引擎中。Connector的作用就相当于一个连接器&#xff0c;连接Flink计算引擎跟外界存储系统。Flin…