首页 > 其他分享 >零基础C语言-插入排序

零基础C语言-插入排序

时间:2024-11-27 22:01:05浏览次数:9  
标签:end 插入排序 基础 C语言 插入 后移 排序 我们

插入排序

插入排序是排序算法当中一种很基础的算法,同时他也我们日常生活当中所见到最多的排序。

比如我们在拿扑克牌的时候,所用的排序方法就是将手中刚刚拿到的牌放入一个比前边大后边小的位置,直接插入进去,这就是插入排序。

所以我们要对插入排序进行实现我们就要进行代码的模拟。

#include <stdio.h>
#include <stdlib.h>
int main()
{
 int a[8]={1,3,5,4,6,7,2,9};
  int i =0;
  for(i = 0;i<7;i++)
  {
  	int end = i;
  	int tmp = a[i+1];
  	while(end>=0)
  	{
  		if(a[end]<tmp)
  		{
  			a[end+1]=a[end];
  			end--;
		  }
		  else 
		  break;
	  }
	  a[end+1] = tmp;
  }
  for(i = 0;i<=7;i++){
  printf("%d",a[i]);
}
  return 0;
}

 首先我们给定一个数组,取一些没有顺序大小的数字。

我们要进行一个降序的排序。

插入排序的本质就是用下一个插入的数,来和已经排序好的数进行比较一旦发现一个合适的中间位置,那么我们就可以插入进去。

但是,如果说要插入进去就必须要有空位让我们插入进去,那么我们就需要将数组后移,数组的元素后移就会导致对元素的覆盖。

所以我们可以先拷贝需要插入进去的数,然后再进行排序。

建立一个while循环,因为我们是第end个数,所以我们的排序次数肯定不能超过end所以我们while的条件就是end>=0;当end等于零时是最大的排序次数。

进入循环后,如果要插入的数大于前一个数那么就将前一个数后移,然后对end进行减减。

继续搜寻下一个数,直到插入的数小于前一个数,然后else跳出while循环。

因为我们需要插入的数是小于前一个数end的,所以我们要插入在他的后面也就是end,而且经过前边的后移,end+1这个下标的位置已经变成了一个空的位置可以让需要插入的数插入进去。

这样就实现了插入排序的作用。

标签:end,插入排序,基础,C语言,插入,后移,排序,我们
From: https://blog.csdn.net/2404_88411223/article/details/144095309

相关文章

  • 从零开始的Python世界生活——基础篇(Python字典)
    从零开始的Python世界生活——基础篇(Python字典)1.Python字典是什么?​Python字典是python中非常重要的非常灵活和强大的内置数据结构,用于存储键值对(key-value),Python中的字典等价于数学中的映射,也就是key(键)与value(值)一一对应。我们可以通过查找key(键)来获得key(键......
  • C语言实例之10求0-10000中的水仙花数
    1.水仙花数的描述水仙花数(Narcissisticnumber)也被称作自恋数、自幂数等。它是指一个三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为13......
  • 从零开始的Python世界生活——基础篇(Python字典)
    从零开始的Python世界生活——基础篇(Python字典)1.Python字典是什么?​ Python字典是python中非常重要的非常灵活和强大的内置数据结构,用于存储键值对(key-value),Python中的字典等价于数学中的映射,也就是key(键)与value(值)一一对应。我们可以通过查找key(键)来获得key(键)所对......
  • java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
    @目录说明:基础工具类MsgPageResultResponseBusinessDomainEnum(枚举)EsDocumentConstants(常量)本人其他文章链接说明:基础工具类Msgpackagecom.geespace.microservices.data.computing.model.server.response;importjava.util.HashMap;importjava.util.Map;importlom......
  • 【C语言】· 第五讲 · Printf 与 Scanf 学习笔记
    Printf与Scanf一、printf1、 基本⽤法printf()的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的f代表format(格式化),表⽰可以定制输出⽂本的格式。printf()不会在⾏尾⾃动添加换⾏符,运⾏结束后,光标就停留在输出结束的地⽅,不会⾃动换⾏。为了让光标移到下⼀⾏的开头......
  • (一图公基)计算机输入、输出设备。从零基础到精通,收藏这篇就够了!
    计算机输入、输出设备属于计算机硬件系统。一、输入设备输入设备是向计算机输入数据和信息的设备,是计算机与用户或其他设备通信的桥梁,是用户和计算机系统之间进行信息交换的主要装置之一。输入设备的任务是把数据、指令及某些标志信息等输送到计算机中去。计算机能够接......
  • Linux基础(1)
    一、opensslpasswd-1123        openssl是一个开源的加密工具包,提供了各种加密、解密、签名、验证等功能        passwd表示这个命令用于处理密码相关的操作        -1参数指定使用MD5加密算法对密码“123”进程加密处理。MD5是一种常用的哈希算......
  • 【YOLOv11基础[论文必备]】计算已训模型的FPS值、计算每张随机图片的平均推理时间
    ......
  • 【YOLOv10基础[论文必备]】计算已训模型的FPS值、计算每张随机图片的平均推理时间
    本文给大家带来的是计算已训模型的FPS值、计算每张随机图片的平均推理时间,本文的内容是十分有用的,论文必备。一FPS......
  • java 基础知识汇总(1)
    目录1.什么是面向对象?1.1面向对象的特征1.1.1封装(Encapsulation):1.1.2继承(Inheritance):1.1.3多态(Polymorphism):1.1.4抽象(Abstraction):1.2面向对象与面向过程的区别1.3重载(Overload)与重写(Override)的区别   1.3.1重写(Override)1.3.2重载(Overload)1.4构造......