首页 > 其他分享 >直接插入排序

直接插入排序

时间:2023-12-25 15:37:49浏览次数:34  
标签:arr 插入 int 插入排序 insertSort 直接 data ki

直接插入排序是一种简单的排序方法,具体做法是:在插入第i个关键码时,k1,k2,...,ki-1已经排好序,这时将关键码ki依次与关键码ki-1,ki-2,...,进行比较,找到ki应该插入的位置时停下来,将插入位置及其后的关键码依次向后移动,然后插入ki。

下面函数insertSort用直接插入排序对整数序列进行升序排序,在main函数中调用insertSort并输出排序结果。

void insertSort(int data[],int n)   //用直接插入法将data[0]~data[n-1]中的n个整数进行升序排序
{ int i,j;
 int tmp;
 for(i=1;i<n;i++){
   if(data[i]<data[i-1]){         //将data[i]插入有序子序列data[0]~data[i-1]
      tmp=data[i];                //备份待插入的元素
      data[i]=data[i-1];
      for(j=i-2;j>=0&&data[j]>tmp;j--)       //查找插入位置并将元素后移
         data[j+1]=data[j];
      data[j+1]=tmp;              //插入正确位置
   }  //if
 }  //for
}  //insertSort
int main()
{   int *bp,*ep;
    int n,arr[]={17,392,68,36,291,776,843,255};
    n=sizeof(arr)/sizeof(int);
    insertSort(arr,n);
    bp=arr;
    ep=arr+n;
    for(;bp<ep;bp++)        //按升序输出数组元素
       printf("%d\t",*bp);
    return 0;
}


标签:arr,插入,int,插入排序,insertSort,直接,data,ki
From: https://blog.51cto.com/u_14441557/8968799

相关文章

  • el-select自定义指令用于触底加载分页请求options数据(附上完整代码和接口可直接用)
    问题描述某些情况下,下拉框需要做触底加载,发请求,获取option的数据为了方便复用,笔者封装了一个自定义指令另外也提供了一个简单的接口,用于演示我们先看看效果图效果图思路分析注意事项一el-select要不嵌入到body中为何,不嵌入到body标签中呢?答曰,更加方便自定义指令管理......
  • pyqt 主窗口和子窗口直接得数据传递
    用设计师模式ui转换成得py转换成得py基类是object,使用得时候不要再此文件修改,直接新建一个py文件,引入ui——>py文件,然后修改基类继承,多重继承需要主窗口就主窗口类,需要子窗口对话框就对话框类这样做得好处是当我们重复修改ui得时候,不需要修改主函数文件,只需要重载ui生成得py文......
  • 关于把long类型的参数直接传到xml中当sql查询的参数非常慢这件事
    起初,有一张表超级大想要将表复制下来如果查出来list再去复制这将非常慢,听了同事的建议使用了insertinto(select*fromtable)速度得到了显著改善。可是我写代码的时候,再调用接口的时候发现足足有15s,而navicat执行sql语句只有400ms,感觉哪里出了问题但还不知道,最终经过同事的明......
  • JVM虚拟机系统性学习-运行时数据区(方法区、程序计数器、直接内存)
    方法区方法区本质上是Java编译后代码的存储区域,存储了每一个类的结构信息,如:运行时常量池、成员变量、方法、构造方法和普通方法的字节码指令等内容方法区主要存储的数据如下:Class类型信息,如该Class为class类、接口、枚举、注解,类的修饰符等等信息方法信息(方法名称、方法返回......
  • 算法学习笔记四一插入排序
    目录什么是插入排序算法原理示例代码什么是插入排序插入排序可理解为扑克牌摸牌的过程,手中的牌为有序序列,然后随机摸一张牌,根据牌的大小插入到有序序列对应的位置。算法时间复杂度为O(n^2)算法原理默认列表第一个元素为基准,从第二个元素和第一个元素进行比较,并放入到相应位置......
  • freemarker模板数据解析1--页面语法直接获取
    freemarker模板数据解析1--页面语法直接获取​ 对后端接口传递过来的Map<String,List>类型数据的展示。对于普通Map<String,String>数据,我们很清楚,直接上代码:·接口提供数据:Map<String,String>map=newHashMap<>();map.put("k1","v1");map.put("k2","v2"......
  • 3D渲染慢,直接买显卡还是用云渲染更划算?
    3D渲染对建筑师和设计师来说并不陌生,3D渲染的过程中出现渲染卡顿、特殊材质难以渲染,或者本地配置不足、本地渲染资源不够时,常常会影响工作效率。本文比较了3D渲染时,为提高工作效率,买显卡还是用云渲染更划算,希望对大家有帮助。3D渲染速度慢通常带来以下痛点:工作效率低下:慢的渲......
  • 在Python的类型提示中,你不能直接使用​​or​​​来表示一个参数可以是多种类型中的一
    在Python的类型提示中,你不能直接使用or来表示一个参数可以是多种类型中的一种。你应该使用typing.Union来表示这种情况¹²。所以,你的函数应该这样写:fromtypingimportUnion,Listdefquery_coilNum(self,coilNum:Union[str,List[str]]):pass在这个例子中,Union[str,Li......
  • 在输入框里直接粘贴图片的实现方式
    有很多Web编辑器支持直接复制粘贴图片,记录一下这种效果是怎么实现的拿到粘贴板上的imagefile对象document.querySelector('textarea').addEventListener('paste',e=>{constfile=Array.from(e.clipboardData.items).find(v=>v.type.includes('image'))......
  • allure直接到文件夹下,双击index.html无法展示数据,显示loading
    因为直接allure报告浏览器是打不开的,需要用allure命令渲染之后打开参能展示渲染效果解决方法:1、allureopen报告所在地址的文件夹名称/   allureopen测试报告/         2、写txt文件,内容:allureopen测试报告/,修改后缀为bat        ......