插入排序直接插入排序

插入排序  时间:2021-01-08  阅读:()

插入排序

呃,先声明下,这是我查课本后一个字一个字码上去的,可不是ctrl+c,ctrl+v上去的··· 插入排序有好几种,如:直接插入排序,二分插入排序,表插入排序··· 这里只介绍直接插入排序,其余还望楼主自己上网找资料。

代码(只给出整型数组排序) void InsertSort(int*array,int n) { int i,j,t;//i表示插入次数,共进行n-1次插入 for(i=1;i<n;i++) { t=array[i];//把待排元素赋给t,移动 j=i-1; while((j>=0)&&(t<array[j])) { array[j+1]=array[j]; j--;//顺序比较和移动 } array[j+1]=t;//再次移动 } } 效率分析: 从空间上看:它只需要一个元素的辅助空间,用于元素的位置交换。

从时间分析:向有序表中逐个插入记录的操作,进行了n-1次,每次操作分为比较关键码和移动记录,而比较次数和移动记录的次数取决于待排序列关键码的初始排列。

最好情况下,即待排序列已按关键码有序,每次操作只需1次比较,2次移动。

总比较次数=n-1次 总移动次数=2(n-1)次 最坏情况下,即第j次操作,插入记录需要同前面的j个记录进行j次关键码比较,移动记录的次数为j+2次。

总比较次数= n-1 ∑j=(1/2)n(n-1); j=1 总移动次数= n-1 ∑(j+1)=(1/2)n(n-1)+2n; j=1 平均情况下,即第j次操作,插入记录大约同前面的j/2个记录进行关键码比较,移动记录次数为j/2+2次。

因此,直接插入排序的时间复杂度为O(n2)。

直接插入算法的元素移动是顺序的,该方法是稳定的。

希望能帮到你~~~

C语言插入法排序

算法要求:用插入排序法对10个整数进行降序排序。

算法分析:将序列分为有序序列和无序列,依次从无序序列中取出元素值插入到有序序列的合适位置。

初始是有序序列中只有第一个数,其余n-1个数组成无序序列,则n个数需进n-1次插入。

寻找在有序序列中插入位置可以从有序序列的最后一个数往前找,在未找到插入点之前可以同时向后移动元素,为插入元素准备空间。

算法源代码: # include <stdio.h> main() { int a[10],i,j,t; printf("Please input 10 numbers: "); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=1;i<10;i++) /*外循环控制趟数,n个数从第2个数开始到最后共进行n-1次插入*/ { t=a[i]; /*将待插入数暂存于变量t中*/ for( j=i-1 ; j>=0 && t>a[j] ; j-- ) /*在有序序列(下标0 ~ i-1)中寻找插入位置*/ a[j+1]=a[j]; /*若未找到插入位置,则当前元素后移一个位置*/ a[j+1]=t; /*找到插入位置,完成插入*/ } printf("The sorted numbers: "); for(i=0;i<10;i++) printf("%d ",a[i]); printf(" "); } 算法特点:每趟从无序序列中取出第一个数插入到有序序列的合适位置,元素的最终位置在最后一趟插入后才能确定位置。

也可是先用循环查找插入位置(可从前往后或从后往前),再将插入位置之后的元素(有序列中)逐个后移一个位置,最后完成插入。

该算法的特点是在寻找插入位置的同时完成元素的移动。

因为元素的移动必须从后往前,则可将两个操作结合在一起完成,提高算法效率。

仍可进行升序或降序排序。

c语言插入排序

已经测试过可行。

#include"stdio.h" #define MAXSIZE 20//一个用作示例的小顺序表的最大长度 int Insertsort(int r[],int n) {//作直接插入排序 int i,j; for(i=2;i<=n;i++) { r[0]=r[i]; //r[0]用作哨兵单元 j=i-1; while(r[0]什么叫插入排序?本来准备用个人理解来说的, 但是怕误导了你, 还是看百科里面的解释吧, 很详细. 如果觉得太多, 可以只看基本概念, 很清晰的. 插入排序: /zh/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F 冒泡排序: /view/254413.html?fromTaglist

直接插入排序

直接插入排序的作法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。

第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。

台湾云服务器整理推荐UCloud/易探云!

台湾云服务器去哪里买?国内有没有哪里的台湾云服务器这块做的比较好的?有很多用户想用台湾云服务器,那么判断哪家台湾云服务器好,不是按照最便宜或最贵的选择,而是根据您的实际使用目的选择服务器,只有最适合您的才是最好的。总体而言,台湾云服务器的稳定性确实要好于大陆。今天,云服务器网(yuntue.com)小编来介绍一下台湾云服务器哪里买和一年需要多少钱!一、UCloud台湾云服务器UCloud上市云商,...

Digital-vm80美元,1-10Gbps带宽日本/新加坡独立服务器

Digital-vm是一家成立于2019年的国外主机商,商家提供VPS和独立服务器租用业务,其中VPS基于KVM架构,提供1-10Gbps带宽,数据中心可选包括美国洛杉矶、日本、新加坡、挪威、西班牙、丹麦、荷兰、英国等8个地区机房;除了VPS主机外,商家还提供日本、新加坡独立服务器,同样可选1-10Gbps带宽,最低每月仅80美元起。下面列出两款独立服务器配置信息。配置一 $80/月CPU:E3-...

LightNode(7.71美元),免认证高质量香港CN2 GIA

LightNode是一家位于香港的VPS服务商.提供基于KVM虚拟化技术的VPS.在提供全球常见节点的同时,还具备东南亚地区、中国香港等边缘节点.满足开发者建站,游戏应用,外贸电商等应用场景的需求。新用户注册充值就送,最高可获得20美元的奖励金!成为LightNode的注册用户后,还可以获得属于自己的邀请链接。通过你的邀请链接带来的注册用户,你将直接获得该用户的消费的10%返佣,永久有效!平台目前...

插入排序为你推荐
无纺布和熔喷布口罩哪个好口罩选择什么样的面料好红茶和绿茶哪个好红茶和绿茶哪个比较好?雅思和托福哪个好考托福好考还是雅思好考哇?雅思和托福哪个好考考托福好还是雅思好行车记录仪哪个好最好的行车记录仪是什么牌子云盘哪个好哪个网盘好用 而且下载速度快 还免费视频软件哪个好手机看视频用什么软件好考生个人空间登录如何找回 自考考生个人空间的密码?如何增加百度收录如何快速提高百度收录量什么快递最便宜寄件用哪个快递最便宜最好
免费域名 阿里云搜索 80vps mobaxterm 电子邮件服务器 idc是什么 共享主机 tna官网 如何安装服务器系统 支持外链的相册 电信托管 无限流量 空间登陆首页 阿里云官方网站 国外网页代理 脚本大全 蓝队云 删除域名 西部数码主机 blaze 更多