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页…

mysql按月分列统计_实现mysql按月统计的教程

mysql有个字段是DATETIME类型&#xff0c;要实现可以按月统计&#xff0c;该怎么写sql语句&#xff1f;select month(f1) from tt group by month(f1)or select DATE_FORMAT(f1,%m) from tt group by DATE_FORMAT(f1,%m)比如数据库的为2008-01-15 12&#xff1a;10&#xff1a;…

Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender

Log4j现在已经被大家熟知了&#xff0c;所有细节都可以在网上查到&#xff0c;Log4j支持Appender&#xff0c;其中DailyRollingFileAppender是被经常用到的Appender之一。在讨论今天的主题之前&#xff0c;我们先看下另外一个Appender。 最常用的Appender——RollingFileAppend…

VirtualBox虚拟机安装CentOS 7

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

mysql 指定账户已存在_安装mysql时告诉我指定的账户已存在?

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

C语言:用字符读取流和输出流来读写入数据。(文本文件)

/* 文件的几种操作模式: r:只读 w:只写 rw:可读可写 文件的分类&#xff1a; t:文本文件(字符文件) b:二进制文件(字节文件)注意&#xff1a; 采用只读方式打开文件时,如果源文件不存在,打开文件会失败&#xff01; 采用只写方式打开文件时,不管源文件存不存在,都不会失败…

PC 上访问设备数据库的方法

通过 .NET 访问 .sdf 的数据库的方法&#xff1a; 在 VS2005 IDE 中&#xff0c;创建 SQL MOible 数据库&#xff0c;编辑表结果和填充数据。 具体是在 Server Explorer 中&#xff0c;右键单击 “Data Connections”&#xff0c;选择 “Add Connection”&#xff0c;新建一个 …

模板原理和操作数据类的观点【艰难的一天,慢慢的会过去的】

1.模板原理&#xff1a;视图类【将数据输出到模板中&#xff0c;实现对视图的控制】 smarty的类实现对视图的控制【展示和smarty的基本语法&#xff1a;smarty需要它的库进行支持】 面向对象的编程中对象的访问和类的访问本质上还是代码空间的访问&#xff0c;区别也在于对象的…

mysql 用户 类别_从mysql里读取用户类型

##1、后端1(从mysql里读取用户类型)&#xff1a;from django import formsfrom django.forms import widgetsfrom django.forms import fieldsfrom app01 import modelsfrom django.forms import ModelChoiceField,ModelMultipleChoiceFieldfrom django.shortcuts import rende…

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

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

老子《道德经》第三十三章

上德不德&#xff0c;是以有德&#xff1b;下德不失德&#xff0c;是以无德。 上德无为而无不为&#xff0c;下德为之而有以为&#xff0c;上仁为之而无以为&#xff0c;上义为之而有以为。 上礼为之而莫之应&#xff0c;则攘臂而扔之。 故失道而后德&#xff0c;失德而后仁&am…

[Spring]-各种标注-零配置

个人学习笔记&#xff0c;记录了一些比较基础的标注&#xff1b; 1、controller 控制器&#xff08;注入服务&#xff09;2、service 服务&#xff08;注入dao&#xff09;3、repository dao&#xff08;实现dao访问&#xff09;4、component pojo实例化到spring容器中&#xf…

mysql弄丢初始密码_MySql密码丢失

windows下mysql密码忘记了第一步&#xff1a;netstat -nat(可以查看mysql是否启动了&#xff0c;如果启动了&#xff0c;可以用输入net stop mysql(或者通过任务管理器结束进程))第二步&#xff1a;mysqld --skip-grant-tables&#xff0c;不要关闭窗口第三步&#xff1a;开启一…

CodeForces-500C

传送门 给n本不同重量的一摞书编号1&#xff5e;n。给定m次操作。操作b代表花费标号为b的书上方其他书的重量总和&#xff0c;将书b位移到这叠书的最上方。问初始书应该如何叠放&#xff0c;才能使m次操作后总花费最小 输入 n本书 m次操作 n个数 书的重量 m个数 操作对象 输出 …

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

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

bzoj - 2038: [2009国家集训队]小Z的袜子(hose)

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id2038 莫队算法可以解决一类不修改、离线查询问题。而这题可以用莫队来做。 *我是看这个论文学会的&#xff1a;&#xff08;链接~&#xff09; 其实莫队就是一种优化的暴力&#xff0c;只是把查询都离线预先按照规则…

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…