[3] 算法之路 – 插入排序

[3] 算法之路 – 插入排序

大家好,又见面了,我是全栈君。

插入排序算法

1、将排序部分分成两部分

2、每次从后面部分取最前面的数插入到前面部分的适当位置


该处提供两个插入排序版本号,指定间隔插入与插入排序。后面对指定间隔排序提到Shell排序中的n/2间隔与Sedgewick间隔

比如:

排序前:92 77 67 8 6 84 55 85 43 67

[77 92] 67 8 6 8455 85 43 67 将77插入92前

[67 77 92] 8 6 8455 85 43 67 将67插入77前

[8 67 77 92] 6 8455 85 43 67 将8插入67前

[6 8 67 77 92] 8455 85 43 67 将6插入8前

[6 8 67 77 84 92]55 85 43 67 将84插入92前

[6 8 55 67 77 8492] 85 43 67 将55插入67前

[6 8 55 67 77 84 8592] 43 67 ……

[6 8 43 55 67 77 8485 92] 67 ……

[6 8 43 55 67 67 7784 85 92] …… 

// 插入排序
int InsertionSort(int a[],int lens)
{
	int k;
	int tmp;
	for(int i=1;i<lens;i++)
	{
		int j=i-1;
		//取出待插数据
		tmp = a[i];
		
		// 遍历前面已排好序的序列。找插入位置
		// 在i之前查找需待插入数据a[i]的位置k
		for(k=j;k>=0;k--)
		{
			if(tmp<a[k]) a[k+1]=a[k];// 后移
			else break;//找到位置

		}
		// 找到位置。插入指定值
		if(i!=(k+1))a[k+1]=tmp;
	}
	return 0;
}

// 插入排序 - 使用指定间隔的
int InsertionSortWithGap(int a[],int lens,int gap)
{
	int k,tmp;
	// 控制插入层
	for(int m=0;m<gap;m++)
	{
		for(int i=gap+m;i<lens;i+=gap)
		{
			int j=i-gap;
			tmp=a[i];
			for(k=j;k>=0;k-=gap)
			{
				if(tmp<a[k]) a[k+gap]=a[k];
				else break;
			}
			if(i!=(k+gap))a[k+gap]=tmp;
		}
	}
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115563.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于opencv在摄像头ubuntu根据视频获取

    基于opencv在摄像头ubuntu根据视频获取

    2021年12月31日
    44
  • MySQL数据库备份的4种方式「建议收藏」

    MySQL数据库备份的4种方式「建议收藏」MySQL备份的4种方式总结:备份方法备份速度恢复速度便捷性功能一般用于cp快快一般、灵活性低很弱少量数据备份mysqldump慢慢一般、可无视存储引擎的差异一般中小型数据

    2022年7月4日
    34
  • oracle数据库sys密码修改_oracle修改system密码

    oracle数据库sys密码修改_oracle修改system密码Oracle提供两种验证方式,一种是OS验证,另一种密码文件验证方式,如果是第一种方式用以下方法修改密码:sqlplus/assysdbaalterusersysidentifiedby新密码;alterusersystemidentifiedby新密码;如果是第二种方法用以下方法修改密码:orapwdfile=pwdxxx.orapassword=你设定的新密码e…

    2022年7月28日
    32
  • Python 二进制,十进制,十六进制转换「建议收藏」

    Python 二进制,十进制,十六进制转换「建议收藏」十六进制到十进制使用int()函数,第一个参数是字符串’0Xff’,第二个参数是说明,这个字符串是几进制的数。 转化的结果是一个十进制数。>>>int(‘0xf’,16) 15二进制到十进制>>>int(‘10100111110′,2)   1342八进制到十进制>>>int(’17’,8)  15其实可以

    2022年5月19日
    46
  • dota2已连接协调服务器,正在登陆中的解决办法「建议收藏」

    dota2已连接协调服务器,正在登陆中的解决办法「建议收藏」这两天,家里有亲戚过世,暗恋的小姑娘跟别人出去玩了,心情不好,打开dota2,连了好几次都没连上,按网上的说法清除缓存,重启电脑都试过了,不行,后来发现,我是手机开的热点,这里信号不好,换一个信号好的卡就行了,很多关于网络的问题其实都和网速有关,因为网速不合格和断网基本上是同一个问题,所以一般会引起混淆。…

    2022年5月17日
    143
  • P750 内存插槽

    P750 内存插槽查看p750内存插槽占用情况lscfg-vp|grep-pDIMMMemoryDIMM:RecordName……………..VINIFlagField………………XXMSHardwareLocationCode……U78A0.001.DNWKM02-P1-C13-C2…

    2022年6月15日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号