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

文章目录

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

插入排序


首先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时
在这里插入图片描述

对链表进行插入排序

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

小结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

玩转Python:用Python处理文档,5个必备的库,特别实用,附代码

在Python中,有几个流行的库用于处理文档,包括解析、生成和操作文档内容。以下是一些常用的库及其简介和简单的代码示例: PyPDF2 - 用于处理PDF文件。 简介:PyPDF2是一个纯Python库,用于分割、合并、转换和提取PDF文件中…

C#,入门教程(09)——运算符的基础知识

上一篇: C#,入门教程(08)——基本数据类型及使用的基础知识https://blog.csdn.net/beijinghorn/article/details/123906998 一、算术运算符号 算术运算符号包括:四则运算 加 , 减-, 乘*, 除/与取模%。 // 加法,运算 int va 1 …

移动神器RAX3000M路由器不刷固件变身家庭云之六(高级应用):设置https

本系列文章: 移动神器RAX3000M路由器变身家庭云之一:开通SSH,安装新软件包 移动神器RAX3000M路由器变身家庭云之二:安装vsftpd 移动神器RAX3000M路由器变身家庭云之三:外网访问家庭云 移动神器RAX3000M路由器变身家庭云…

洗地机有必要买吗?2024好用的洗地机推荐

洗地机有必要吗?单答案是肯定的!传统的家务劳动真的是耗时又枯燥,特别是地面清洁。要先扫一遍灰,然后用湿拖把先把地面全拖一遍,然后用干拖把把水渍再推一遍,最后还要忍着恶心去清洗拖把,费时费…

全网最全stable diffusion模型讲解!快来!!小白必收藏!!

手把手教你入门绘图超强的AI绘画程序Stable Diffusion,用户只需要输入一段图片的文字描述,即可生成精美的绘画。给大家带来了全新Stable Diffusion保姆级教程资料包(文末可获取) AI模型最新展现出的图像生成能力远远超出人们的预…

企业机密文件防泄密解决方案(具体执行时间表)

企业的机密文件是其核心竞争力的重要组成部分。一旦机密文件泄露,可能会给企业带来重大的经济损失和声誉损害。因此,企业需要采取有效的措施来保护机密文件的安全性。本文将介绍一种企业机密文件防泄密解决方案,帮助企业提高信息安全防护能力…

CentOS 8 8.5.2111 网络在线安装系统 —— 筑梦之路

之前写过一篇关于centos 8 官方停止更新维护后解决yum源问题的文章: CentOS 8 停止维护后换可用yum源——筑梦之路_http://ftp.iij.ad.jp/pub/linux/centos-vault/8.5.21-CSDN博客 由于centos 8 dvd的镜像比较大,有时候我们根本不需要去下载一个10G以上…

【数据库原理】(9)SQL简介

一.SQL 的发展历史 起源:SQL 起源于 1970 年代,由 IBM 的研究员 Edgar F. Codd 提出的关系模型概念演化而来。初期:Boyce 和 Chamberlin 在 IBM 开发了 SQUARE 语言的原型,后发展成为 SQL。这是为了更好地利用和管理关系数据库。…

iOS 解决push证书不受信任

重新下载:https://www.apple.com/certificateauthority/

手把手带你门SpringCloud

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是平顶山大师,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《手把手带你门SpringCloud开发之入门级及nacos…

在Flyway执行数据库脚本之前创建数据库

Flyway让我们不用手动执行sql脚本,但是众所周知,前提是要先创建项目的数据库。为了能够让运维的同事再偷一次懒,通过代码来自动完成数据库的创建,于是有了这篇文章的分享~ 要实现这个效果,只需要两步: 第一…

【Python机器学习】线性模型——lasso

除了岭回归,还有一种正则化的线性回归是lasso,与岭回归相同,使用lasso也是约束系数使其接近于0,但方法不同,叫做L1正则化。L1正则化的结果是使用lasso时某些系数刚好为0。说明某些特征被模型完全忽略。 同样以波士顿房…

企业防泄密软件超全图文解析!快来看!

防泄密软件作为保障企业信息安全的重要工具,其重要性不言而喻。本文将为您解析企业防泄密软件的方方面面,帮助您了解如何选择适合自己企业的防泄密软件。 一、泄密的渠道有哪些 1、外部入侵:黑客攻击、病毒感染等外部因素可能导致企业的数据…

Vue脚手架及组件开发

组件插槽: 路由数据传递:

ubuntu20.04安装cuda11.7和显卡驱动

1、禁用nouveau sudo vi /etc/modprobe.d/nouveau.conf 在最下面加入blacklist nouveau sudo update-initramfs -u sudo reboot 输入命令,如果没有任何输出,证明禁用成功 lsmod | grep nouveau 2、安装cuda11.7 CUDA Toolkit Archive | NVIDIA Deve…

ubuntu 22 virt-manger(kvm)安装winxp; ubuntu22体验 firebird3.0

安装 、启动 virt-manager sudo apt install virt-manager sudo systemctl start libvirtdsudo virt-manager安装windowsXP 安装过程截图如下 要点1 启用 “包括寿终正寝的操作系统” win_xp.iso 安装过程 : 从winXp.iso启动, 执行完自己重启从硬盘重启&#xff0c…

高压放大器输出接法及其注意事项

高压放大器应用场景非常广泛,非常适用于半导体高压驱动、TFT产业高压驱动、各种高压工程等应用;也很适用当作音频信号产生器或函数波形产生器的波形放大使用。使用场景广泛,放大器的输出接法也多种,对于不同的放大器也有对应的输出…

【漏洞复现】ActiveMQ反序列化漏洞(CVE-2015-5254)

Nx01 产品简介 Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件。ActiveMQ是消息队列服务,是面向消息中间件(MOM)的最终实现,它为企业消息传递提供高可用、出色性能、可扩展、稳定和安全保障。 Nx02 漏洞描述 Re…

怎么做表单二维码来获取用户数据?扫码填表的制作方法

​怎么用二维码来收集其他人的信息,比如用户反馈、信息采集、问卷调查等等,都是现在表单二维码的常见应用方式。那么如果我们想制作一个表单二维码用来采集其他人员的反馈信息,用二维码生成器来制作的步骤有哪些呢?下面来教大家在…

软件测试|SQL中的null值,该如何理解?

深入理解SQL中的Null值:处理缺失数据的重要概念 简介 Null值在SQL中是用于表示缺失或未知数据的特殊值。本文将深入探讨Null值的概念、处理方法和注意事项,以帮助读者更好地理解和处理SQL中的缺失数据。 在SQL数据库中,Null值是一种特殊的…