c++排序算法ppt_C/C++学习教程:C语言排序算法—插入排序算法

e35b50eb8ce2c5d07544a7ba85c77233.png
前言:插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。
直接插入排序是插入排序算法中的一种,采用的方法是:在添加新的记录时,使用顺序查找的方式找到其要插入的位置,然后将新记录插入。
很多初学者所说的插入排序,实际上指的就是直接插入排序算法,插入排序算法还包括折半插入排序、2-路插入排序,表插入排序和希尔排序等。

5ccbf3bb49542732c650fb67b69ec846.png

直接插入排序的基本操作是将一个记录插入到已经排好的有序表中。

先选定一个位置i,插入排序将i左侧比位置i数值大的数值全部右移,然后将原来i对应的值插入回去。

ef7420d3428a87b4678ff21a855c9bdf.png
voidInsertSort(int*p){int i,j;inttmp=0;for(i=1;i<10;i++)
{if(p[i-1]>p[i]) {tmp = p[i];//将p[i]左边比p[i]大的全部左移,要先将其赋给一个缓存变量
for(j=i-1;p[j]>tmp;j--)
{p[j+1]=p[j];
}p[j+1]=tmp;
} }}

过程,先将p[i]的值赋给tmp,然后i左侧的数值与tmp比较,比tmp大则右移一位,不比tmp大,则将tmp插入回去。

6287bb651cb96d53fe4d1dcbd8cc124f.png

最好情况下,即要排序的序列本身是有序的,第7行的比较一共执行了n-1次,没有移动记录,时间复杂度为O(n)。

最坏情况下,需要比较2+3+...+n=(n+2)(n-1)/2次,移动次数为(n+4)(n-1)/2

8a20c6d21f7109c9f8fe5e6ac34ae13c.png

时间复杂度为O(n2)

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

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

相关文章

python函数参数

1.位置参数 2.默认参数 指向参数为不可变对象 3.可变参数 **args 一个列表list或是元组tuple 4.关键字参数 **kw,是一个字典dict 5.命名关键字参数 *, 转载于:https://www.cnblogs.com/aliy-pan/p/5198025.html

Python 常用函数 configparser模块

使用ConfigParser模块读写ini文件 ConfigParserPython的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。模块所解析的ini配置文件是由多个section构成&#xff0c;每个section名用中括号‘[]’包含&#xff0c;每…

自制Unity小游戏TankHero-2D(3)开始玩起来

自制Unity小游戏TankHero-2D(3)开始玩起来 我在做这样一个坦克游戏&#xff0c;是仿照&#xff08;http://game.kid.qq.com/a/20140221/028931.htm&#xff09;这个游戏制作的。仅为学习Unity之用。图片大部分是自己画的&#xff0c;少数是从网上搜来的。您可以到我的github页…

VirtualBox虚拟机安装CentOS 7

新建虚拟机 因为比较简单&#xff0c;所以对于VirtualBox就不做过多介绍了&#xff0c;直接下载安装即可&#xff0c;安装好之后打开Oracle VM VirtualBox管理器&#xff0c;点击新建&#xff0c;选择Red Hat&#xff08;根据windows主机选择 32/64 bit&#xff0c;通常会自动识…

从C语言到C++成长经历所得的一些技巧和感悟

我介绍几个办法&#xff0c;学习办法&#xff0c;期望你能找到爱好1。必定要和喜爱编程的&#xff0c;或编程凶猛的&#xff0c;或常常编程的人&#xff0c;在一同&#xff0c;常常探讨问题&#xff01;初学编程会有许多问题呈现&#xff0c;你自己很 难处理 c是我们必定要学的…

java基础篇---网络编程(UDP程序设计)

UDP程序设计 在TCP的索引操作都必须建立可靠地连接&#xff0c;这样一来肯定会浪费大量的系统性能&#xff0c;为了减少这种开销&#xff0c;在网络中又提供了另外一种传输协议---UDP,不可靠的连接&#xff0c;这种协议在各个聊天工具中被广泛的应用。 咋UDP开发中使用Datagram…

c++ 静态变量赋值_Python变量及常量解释说明

变量(1)在计算机程序中,变量不仅可以是数字,还可以是任意数据类型,变量子啊程序中就是一个变量名表示的,变量名必须是大小写英文,数字,和"_"的组合,切不能以数字开头.a 1 #变量a是一个整数1b "shuai" #变量b是一个字符串1c True #变量c是一个布尔值Tru…

Hibernate中session的clear(),flush(),evict()方法详解

2019独角兽企业重金招聘Python工程师标准>>> 一、Clear 方法 无论是Load 还是 Get 都会首先查找缓存&#xff08;一级缓存&#xff09; 如果没有&#xff0c;才会去数据库查找&#xff0c;调用Clear() 方法&#xff0c;可以强制清除Session缓存。例&#xff1a; pub…

40_自定义泛型方法及其应用

java的泛型不同于C的模板方法那么强大。java的泛型只停留在编译阶段&#xff0c;编译通过后泛型特征被擦除&#xff0c;主要因为保证jvm的效率。 用泛型知识&#xff0c;写一个交换数组元素的方法&#xff08;此方法只适合于引用类型数组!因为int[]不会自动转为Integer[]!&…

SQL Server代理(11/12):维护计划作业

SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法&#xff0c;因此系统的知识&#xff0c;对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。 在这一系列的上一篇&#xff0c;我们看了使用代理帐户模仿Windows安全上下文完成作业步骤的工作。大…

XtraBackup全备与增量备份

一、XtraBackup安装 下载地址&#xff1a;http://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.8/source/ 安装步骤&#xff1a; How to build XtraBackup on Linux Prerequisites -------------$ yum install cmake gcc gcc-c libaio libaio-devel automake autocon…

《大话设计模式》 国外资料

It is not easy to remember all design patterns. Here are some stories about design patterns which might help! Creational Singleton – Only one president in AmericaFactory – A factory that produces humanAbstract Factory – An abstract factory to produce CP…

python arcgis 图书_arcgis python

本书作者是GIS发方面的知名作者&#xff0c;曾著有《JavaScript构建Web和ArcGIS Server应用实战》(Building Web and Mobile ArcGIS Server Applications with JavaScript)一书。 本书内容易学易懂&#xff0c;帮助读者成为GIS发高手。《面向ArcGIS的Python脚本编程》是一本指导…

博客园客户端UAP开发随笔 -- App连接云端内容的桥梁:WebView

当你辛苦的从网上爬下来一篇文章之后&#xff0c;怎么在你的应用内展示这些包含HTML标记的文章&#xff1f;如果你使用的是Javascript开发应用&#xff0c;恭喜你&#xff0c;直接塞进页面就可以了&#xff0c;同时说明你很熟悉页面开发&#xff0c;而现在windows也支持这种方式…

C4.5

C4.5是机器学习算法中的另一个分类决策树算法&#xff0c;它是基于ID3算法进行改进后的一种重要算法&#xff0c;相比于ID3算法&#xff0c;改进有如下几个要点&#xff1a; 用信息增益率来选择属性。ID3选择属性用的是子树的信息增益&#xff0c;这里可以用很多方法来定义信息…

谈谈分布式事务之三: System.Transactions事务详解[下篇]

在前面一篇给出的Transaction的定义中&#xff0c;信息的读者应该看到了一个叫做DepedentClone的方法。该方法对用于创建基于现有Transaction对 象的“依赖事务&#xff08;DependentTransaction&#xff09;”。不像可提交事务是一个独立的事务对象&#xff0c;依赖事务依附于…

iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能&#xff0c;乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的&#xff0c;这不愧为一项伟大的设计。今天我们就针对iOS的触摸事件&#xff08;手势操作&#xff09;、运动事件、远程控制…

python为什么忽然火了_为什么Python突然就火了起来了呢?

近日&#xff0c;TIOBE发布10月编程语言排行榜显示&#xff0c;15年来TIOBE指数的前8名一直保持不变&#xff0c;而Python正在成为一种新的大型语言。越来越多的企业在使用Python进行开发&#xff0c;越来越多的人正在加入Python程序员行列!TIOBE 10月编程语言排行榜前20名Pyth…

ARP扫描工具arp-scan

2019独角兽企业重金招聘Python工程师标准>>> ARP扫描工具arp-scan arp-scan是Kali Linux自带的一款ARP扫描工具。该工具可以进行单一目标扫描&#xff0c;也可以进行批量扫描。批量扫描的时候&#xff0c;用户可以通过CIDR、地址范围或者列表文件的方式指定。该工具…

elementui el-from 怎样显示图片_vue2.0使用weui.js的uploader组件上传图片(兼容移动端)...

本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发、Nodejs、Python、Linux、IT资讯等板块.最近在使用 vue2.0开发微信公众号网页 其中涉及到 选择图片, 图片的压缩上传, 预览, 删除等操作。项目整体UI框架使用的是 vux, 但可惜的…