插入排序详解!!!(简单排序),基本功排序C语言版

目录

1.什么是插入排序

2.插入排序的源代码

3.源代码详解


1.什么是插入排序

  这是一个插入排序的流程图,插入排序 很像我们玩斗地主,玩牌,斗地主在开始前,我们是不是要给我们手上的牌排序啊,假设我们理牌有一个规矩就是只能一张一张拿起来。并且我们给牌换位置也只能一张一张换。不能中间跳过一张直接换(因为机器和人脑不同)

那我们拿起第一张的时候,和上图一样我们拿到一个3,那现在就只有一个3,你也不用排序

但我们拿到第二张的时候,这时有两张牌,拿到的是5,它确实比3大,那5就在3的后面就好

我们拿到第三张2的时候,这时候2是不是比5小,那2 和 5就交换,现在手牌就是 3 2 5,然后因为现在 2 的 前一张牌还是大于2,我们就再交换一下,手牌就变成了2 3 5.

这样就完成了一次插入排序。

后面的插入排序也是在这个基础上循环即可

2.插入排序的源代码

#include<stdio.h>
void Swap(int* a, int* b)
{int tmp = *a;*a = *b;*b = tmp;
}
void My_Insertsort(int* arr,int sz)
{for (int i = 1; i < sz; i++){if (arr[i] < arr[i - 1]){for (int j = i - 1; j >= 0; j--){if (arr[j] > arr[j + 1]){Swap(&arr[j], &arr[j+1]);}else{break;}}}}
}int main()
{int arr[] = { 2,4,1,6,7,2,10,22,44,0 };int sz = sizeof(arr) / sizeof(arr[0]);My_Insertsort(arr, sz);return 0;
}

3.源代码详解

#include<stdio.h>
void Swap(int* a, int* b)
{int tmp = *a;*a = *b;*b = tmp;
}
void My_Insertsort(int* arr,int sz)
{for (int i = 1; i < sz; i++){if (arr[i] < arr[i - 1]){for (int j = i - 1; j >= 0; j--){if (arr[j] > arr[j + 1]){Swap(&arr[j], &arr[j+1]);}else{break;}}}}
}

 源代码主要解释的是这一块。

1.第一个for循环是为了遍历除了arr【0】之后的数组arr。

2.if 判断语句 现在 i 位置 小于 前一个位置的数据,这是进入下一个循环的前提。因为从头开始我们每一次 都已经把前面的数字排成有序的。才进行下一个数字的排序。就像 你现在手牌上是 3 5 如果抽到的不是2 是 7(下图),那这张7自然而然就是 最后。不用再往前比了。

3. 第二个for循环 ,就是现在i 这个位置的数字,一个一个往后比,直到遇到比这个数字还小的就停止循环。就比如你现在 手牌 还是 3 5 ,你接下来拿到一张4 ,你4这个位置先和5换了,然后在前面一张发现是3,小于4,那你就没必要换了,最后就变成了 3 4 5.

 

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

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

相关文章

CLM陆面过程模式实践技术应用

NCAR陆面模式CLM (Community Land Model)是地球系统模式CESM (Community Earth System Model)中的陆面过程模式分量&#xff0c;是在结合了BATS、LSM和IAP94等众多陆面模式的优点后&#xff0c;加入水文过程而开发出的综合性陆面模式&#xff0c;是目前国际上发展最为完善且得到…

MySQL-DDL

DDL是数据定义语言&#xff0c;用来定义数据对象&#xff08;数据库&#xff0c;表&#xff0c;字段&#xff09; 数据库操作&#xff1a; 1.查询&#xff1a; 查询所有数据库&#xff1a;SHOW DATABASES; 查询当前数据库&#xff1a;SELECT DATABASE(); 2.创建&#xff1a; C…

UI测试平台RunnerGo一键安装教程

现在安装RunnerGo仅需要一条命令&#xff01;目前支持系统&#xff1a;Centos、Debian、Ubuntu三种。下面给大家介绍一下RunnerGo安装使用流程&#xff1a; Step1&#xff1a;复制以下命令 wget https://img.cdn.apipost.cn/running_go/img/wiki/runnergo.tar && ta…

第二天学习记录

第二天 C++随便提一提,目前不深究,有兴趣了解重点学习编译原理选学C语言操作系统汇编语言编译器设计领域的技术C++ 随便提一提,目前不深究,有兴趣了解 C++历史,原理,过程式编程,面向对象编程,泛型编程,标准,技巧。为了应付复杂程度不断提高的现代化编程任务,C++引…

基于SSM的新闻网站

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

【Python库】pillow (PIL)库的用法介绍

一、引言 Pillow库是Python中用于图像处理的一个非常强大的工具&#xff0c;它实际上是Python Imaging Library&#xff08;PIL&#xff09;的一个分支。Pillow库提供了广泛的图像处理功能&#xff0c;包括但不限于&#xff1a; 图像的读取、写入和保存&#xff1a;Pillow库可…

鸿蒙OS应用开发之日期选择

前面学习了时间选择组件,实现了时间的选择,这样非常方便用户进行时间的输入,通过手动就可以输入时间,比直接文本输入要省不少时间,特别对于手机这样单手操作的设备,更加重要了。因此,日期的输入工作也不能落后,本文将要学习日期选择组件,这样就可以实现日期通过手上下…

【React系列】ES6学习笔记(二)Promise、async\await

本文参考自电子书《ECMAScript 6 入门》&#xff1a;https://es6.ruanyifeng.com/ Promise 对象 1. Promise 的含义 Promise 是异步编程的一种解决方案&#xff0c;比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现&#xff0c;ES6 将其写进了…

打破闲鱼商品搜索瓶颈!云端电商API接口让你畅享商品详情关键词搜索的便利!

在闲鱼卖家的日常经营中&#xff0c;商品搜索是一个至关重要的环节。但是&#xff0c;由于闲鱼平台商品信息繁杂&#xff0c;卖家往往很难通过手动搜索的方式找到符合自己需求的商品。为了解决这一问题&#xff0c;云端电商API接口应运而生。联讯数据将详细介绍云端电商API接口…

有没有游泳可以戴的耳机?游泳耳机入耳式好,还是骨传导好

游泳是一项既能锻炼身体又能让人放松心情的运动。我们知道&#xff0c;音乐能够为我们的水上时光增添更多的乐趣。那么&#xff0c;在众多游泳耳机中&#xff0c;如何选择一款既适合自己的需求又具备良好性能的产品呢&#xff1f; 首先&#xff0c;我们要了解的是&#xff0c;…

[原创][R语言]股票分析实战[8]:因子与subset的关系

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

TCL学习笔记(持续更新)

前言&#xff1a; TCL&#xff08;tool common language&#xff09;是一种通用工具语言&#xff0c;很多eda tool都支持tcl&#xff0c;学习了解一些tcl基本语法还是很有必要的。 1&#xff1a;基础概念 解释器&#xff1a; #!/usr/bin/tclsh 打印&#xff1a; puts -> p…

delvewheel进行repair时报Unable to find library: msvcr100.dll【已解决】

问题描述 我自己编译了我下载的一个开源软件pyuvc&#xff0c;编译出whl文件后使用delvewheel进行repair&#xff0c;也就是把它依赖库dll库拷贝到whl文件中。等效的的执行命令是&#xff1a; python.exe -m delvewheel repair -w .\wheelhouse\ dist\pupil_labs_uvc-1…

大图热控授权世强硬创代理,液冷板产品可解决超高热流密度散热难题

受益于下游产业发展&#xff0c;液冷板&#xff08;又称为“水冷板”&#xff09;市场需求持续上升&#xff0c;行业发展迅速。国内企业为了在竞争激烈的市场中生存&#xff0c;也在不断开发新的散热技术及产品&#xff0c;苏州大图热控科技有限公司便是其中之一。 为将液冷产…

Java大数据hadoop2.9.2搭建伪分布式yarn资源管理器

1、修改配置文件 cd /usr/local/hadoop/etc/hadoop cp ./mapred-site.xml.template ./mapred-site.xml vi mapred-site.xml <configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> &l…

(02)半导体前道制程工艺概览

01、半导体制程工艺概览 在第一篇的最后,我们说到金属氧化物半导体场效应晶体管(MOSFET)的平面式结构让人们可以在晶圆上同时制造出好几个MOSFET。且与第一代晶体管BJT不同,MOSFET无需焊接过程。本期内容就让我们来详细了解一下具体的制程工艺。 为方便讲解,我们先来看一…

蓝牙技术在智能交通系统中的革新与应用

随着科技的不断进步&#xff0c;蓝牙技术已经成为智能交通系统中的一项关键技术。其无线连接和低功耗的特性为交通管理和车辆通信提供了新的解决方案。本文将深入探讨蓝牙技术在智能交通系统中的应用&#xff0c;以及其对交通效率、安全性和用户体验的积极影响。 1. 蓝牙技术在…

下载知虾数据分析软件:优化店铺运营、提高转化率的利器

在如今竞争激烈的电商市场中&#xff0c;对销售数据、流量以及买家行为等关键指标的监控和分析至关重要。Shopee平台为卖家提供了一个内置的在线数据分析工具——“Shopee Analytics”&#xff08;知虾分析&#xff09;&#xff0c;让卖家能够轻松实现对店铺运营的优化、提高转…

海昌海洋公园用泛微千里聆RPA智能采集、识别、分析网络数据,助力优化运营服务

海昌海洋公园控股有限公司&#xff08;以下简称“海昌海洋公园”&#xff09;是中国知名的主题公园和配套商用物业开发及运营商。经过近二十年发展&#xff0c;凭借行业优秀的极地海洋动物保育技术&#xff0c;公司将其业务模式逐步推广到核心城市&#xff0c;展开了海昌海洋公…

Linux学习记录——삼십사 https协议

文章目录 1、了解https1、加密解密2、加密方式3、数据摘要 2、HTTPS的解决方案1、只用对称加密2、只用非对称加密3、双方都用非对称加密4、非对称加密 对称加密 3、CA证书4、最终HTTPS方案 1、了解https HTTPS也是一个应用层协议&#xff0c;在HTTP基础上加入了一个加密层。H…