排序之插入排序:从斗地主到插入排序

目录

1.斗地主如何摸牌

2.从摸牌想到插入排序

3.完成插入排序

4.结束语


1.斗地主如何摸牌

        不知道各位是否玩过几乎人人都玩过的斗地主游戏呢?相必各位或多或少都玩过一点,再没玩过也看别人打过。今天博主就将从这个游戏为大家讲解我们的插入排序。

        在每一个斗地主玩家开始打牌前,我们都要经历一个摸牌的过程,不知道各位有木有发现,我们是怎么做到手上的牌如此整齐的呢?

        其实各位只要稍微回想一下,就会发现我们是拿一张就往牌里插入,找到那个比前面小比后面打的牌。而这个过程其实就是我们的插入排序的过程

2.从摸牌想到插入排序

        在这里博主做了一个小小的动态图来模仿各位的动态图橙色的是我们手上的动态,而蓝色的则是相当于我们还没摸的牌。当然博主这个已经不再只是前面的摸牌了而是进入我们的数字排序了。

       正所谓高山来自积石,长河来自水滴。我们任何一个大的程序的完成都要从小的步骤开始做, 那么我们该如何用代码去完成这中间的每一个小过程呢?

        其实只要稍微模拟一下我们摸牌时候的思路就可以了,即插入的牌的位置,要比我们的后面的牌小,在我们每次向后找位置时,比我们大的牌也在向后走的,就如上面的动态图一样。

int end;//数组的最后一个->即手上的牌最大的那个
int tmp;//要插入的数字
while (end >= 0)
{if (a[end] > tmp)//如果这个数比你插入的大{a[end + 1] = a[end];//这个数字向后移end--;//再往前面次大的数字比}else//你比这个数字大或者等于{break;}a[end + 1] = tmp;//你在你比小的数的位置的前面

那么用代码去完成就是这样的。不知道是否是你心中的答案呢?

3.完成插入排序

        那么上面我们已经完成了单步的插入,那我们后面的插入又该如何完成呢?其实也蛮简单的,因为在实际上我们的第一张牌时不用排序的,那么我们依次将后面的第二张牌,第三张牌插入就可以了,最后我们封装成一个小程序就是这样:

void InsertSort(int *a,int n)
{for (int i = 1; i < n; i++){//[0,end]有序数组int end=i-1;//第一次最后一个数就是a[0]的位置int tmp=i;//永远在已排好数组的后面一个while (end >= 0)//插入{if (a[end] > tmp){a[end + 1] = a[end];end--;}else{break;}a[end + 1] = tmp;}}}

🎾4.结束语

 好了小赵今天的分享就到这里了,如果大家有什么不明白的地方可以在小赵的下方留言哦,同时如果小赵有什么地方说得不对也希望得到大家的指点,谢谢各位家人们的支持。你们的支持是小赵创作的动力,加油。

如果觉得文章对你有帮助的话,还请点赞,关注,收藏支持小赵,如有不足还请指点,小赵及时改正,感谢大家支持!!!

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

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

相关文章

C语言经典例题-17

1.最小公倍数 正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数&#xff0c;设计一个算法&#xff0c;求输入A和B的最小公倍数。 输入描述&#xff1a;输入两个正整数A和B。 输出描述&#xff1a;输出A和B的最小公倍数。 输入&#xff1a;5 7 输出&#xff1a…

Linux内核驱动开发-001字符设备开发-001Led驱动

上节完成了内核驱动框架的搭建&#xff0c;下面将利用Linux内核驱动第一个字符设备文件&#xff0c;即Led驱动。1驱动程序编写 /*************************************************************************> File Name: led.c> Author: yas> Mail: rage_yashotmail…

React vs Vue.js:两种流行框架背后的设计哲学差异

Vue.js 和 React 虽然都是流行的前端框架,但在设计哲学上有一些显著差异。这些差异源自它们不同的设计目标和出发点。 vue.js Vue.js 的核心设计原则是"渐进式"。它旨在尽可能降低学习成本和入门门槛,并与其他库和项目保持良好的整合性。Vue 的设计注重简单性和直观…

C语言堆区内存管理

一、C语言编译的内存分配 二、堆区空间的分配 1、malloc函数 功能&#xff1a;从堆区分配内存 #include <stdlib.h> void *malloc(unsigned int size)//size 分配内存的字节数2、free函数 功能&#xff1a;释放内存 #include <stdlib.h> void free(void *ptr)…

数据恢复宝典:应对磁盘损坏无法读取的终极攻略

当电脑屏幕上突然弹出“磁盘损坏无法读取”的提示时&#xff0c;许多人的心情都会瞬间跌入谷底。那些存储在磁盘中的重要文件、珍贵的回忆&#xff0c;似乎在一瞬间都化为乌有。面对这样的困境&#xff0c;我们该如何应对&#xff1f;本文将深入探讨磁盘损坏无法读取的原因&…

常见的经典目标检测算法

目标检测是计算机视觉领域的一个核心任务&#xff0c;它涉及到识别图像中的物体并确定它们的位置。以下是一些常见的经典目标检测算法&#xff1a; R-CNN系列 R-CNN&#xff08;Region-based Convolutional Neural Network&#xff09;是一种用于目标检测的算法&#xff0c;它…

深度学习500问——Chapter08:目标检测(2)

文章目录 8.2.4 R-FCN 8.2.5 FPN 8.2.6 Mask R-CNN 8.2.4 R-FCN R-FCN 有哪些创新点 R-FCN仍然属于two-stage目标检测算法&#xff1a;RPN R-FCN Fully convolutional位置敏感得分图&#xff08;position-sentive score maps&#xff09; our region-based detector is ful…

开源数据库postgresql在统信系统上的离线安装shell脚本

一个tar包&#xff1a;pgsql_install.tar.bz2 #!/bin/sh echo "安装pgsql_15.4" rm -rf /home/postgres/postgresql mysqldir"/home/postgres" mkdir -p $mysqldir cp /home/pgsql_install.tar.bz2 $mysqldir cd $mysqldirtar -jxvf pgsql_install.tar.bz…

OpenVINO安装教程 npm版

从 npm Registry安装 OpenVINO™ 工具套件的英特尔发行版 请注意&#xff1a; 仅提供 JavaScript API 专用于所有主要操作系统的用户&#xff1a;Windows、Linux 和 macOS &#xff08;所有 x86_64 / ARM64 架构&#xff09; macOS 仅支持 CPU 推理 系统要求软件要求 Window…

Python 数据结构和算法实用指南(二)

原文&#xff1a;zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第四章&#xff1a;列表和指针结构 我们已经在 Python 中讨论了列表&#xff0c;它们方便而强大。通常情况下&#xff0c;我们使用 Python…

【洛谷 P8630】[蓝桥杯 2015 国 B] 密文搜索 题解(字符串+映射+排序)

[蓝桥杯 2015 国 B] 密文搜索 题目描述 福尔摩斯从 X 星收到一份资料&#xff0c;全部是小写字母组成。 他的助手提供了另一份资料&#xff1a;许多长度为 8 8 8 的密码列表。 福尔摩斯发现&#xff0c;这些密码是被打乱后隐藏在先前那份资料中的。 请你编写一个程序&…

【C语言】求最小新整数(贪心算法)

文章目录 题目描述方法一方法二 题目描述 给定一个十进制正整数n(0 < n < 1000000000)&#xff0c;每个数位上数字均不为0。n的位数为m。 现在从m位中删除k位(0<k < m)&#xff0c;求生成的新整数最小为多少&#xff1f; 例如: n 9128456, k 2, 则生成的新整数最…

windows ubuntu 子系统:肿瘤全外篇,2. fq 数据质控,比对。

目录 1.质控 2.比对并排序 3.标记PCR重复,使用picard 4.samtools建立索引 首先我们先下载一组全外显子测序数据。nabi sra库&#xff0c;随机找了一个。 来自受试者“16177_CCPM_1300019”(SRR28391647, SRR28398576)的样本“16177_CCPM_1300019_BB5”的基因组DNA配对端文库…

C#字典底层原理

一&#xff1a;前言 Dictionary是一种键值对的形式存放数据&#xff0c;即 key和value一一映射。key的类型没有限制&#xff0c;可以是整数、字符串甚至是实例对象 C#字典源码 时间复杂度 ——Add&#xff1a;O(1) ——Remove&#xff1a;一般情况下为O(1)&#xff0c;最差情…

Android开发如何从入门进阶到架构

最近按照Android学习体系整理了下Android学习课程&#xff0c;这个体系的设计是为了帮助学习者系统性地掌握Android开发的各个方面。。分为入门学习、项目实战、底层原理、性能优化、架构设计、面试和综合能力提升系列。大家按照这个路径来学习一定能够Android架构师。 需要课…

# 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(3)

从浅入深 学习 SpringCloud 微服务架构&#xff08;三&#xff09;注册中心 Eureka&#xff08;3&#xff09; 段子手168 1、eureka&#xff1a;高可用的引入 Eureka Server 可以通过运行多个实例并相互注册的方式实现高可用部署&#xff0c; Eureka Server 实例会彼此增量地…

python爬虫小案例——汽车之家

本篇文章是使用bs4中的BeautifulSoup和requests解析网页和获取数据&#x1f451;&#x1f31f; 文章目录 &#x1f31f;前言一、&#x1f349;bs4中的BeautifulSoup二、&#x1f349;bs4的语法三、&#x1f349;内容实践1. 确定想要爬取的内容2. 分析网页3. 获取数据分析 &…

AI预测福彩3D➕体彩排3合并2024年4月21日预测结果

由于今天是周末&#xff0c;周末事情比较多&#xff0c;今天回来比较晚了&#xff0c;数据刚跑完&#xff0c;趁着离开奖还有一段时间&#xff0c;咱们还是把3D和排3的预测合并发布。好了&#xff0c;废话不多说&#xff0c;直接放结果吧&#xff5e; 一.4月21日3D预测结果 …

探索C++的奇妙世界:学习之旅的点点滴滴

在这个信息技术飞速发展的时代&#xff0c;编程语言作为计算机与人类沟通的桥梁&#xff0c;其重要性不言而喻。在众多编程语言中&#xff0c;C以其高效、灵活和强大的特性&#xff0c;吸引了无数编程爱好者的目光。今天&#xff0c;我将与大家分享我学习C的历程和心得&#xf…

JAVA并发编程面试题

作者有话说&#xff1a;目前正在跟新一系列的java面试题&#xff0c;持续不断更新。需要找工作或者不需要找工作的猴子们&#xff0c;都可以关注一下。着急的可以评论区留留言&#xff0c;面试文档以及简历模板。看到了我会发 1. 说说进程和线程的区别 进程 当一个程序在计算机…