插入排序算法的心得

#include <iostream>
using namespace std;//排序插入算法
int main()
{
	int old[]={17,46,32,87,58,9,50,38};
	int n=sizeof(old)/sizeof(old[0]);//数组元素个数
	int j,save;//save临时保存前一个元素,j
	for(int i=1;i<n;i++)
	{
		save=old[i];
		for(j=i-1;j>=0&&save<old[j];j--)//核心代码
			old[j+1]=old[j];
		old[j+1]=save;


		for(int i=0;i<n;i++)
			cout<<old[i]<<"   ";
		cout<<endl;
	}
	return 11;
}

核心代码中:j>=0&&save<old[j]           

检索 检索元素小于后者元素时进行for循环,一直检索到元素开头处。

一:如果检索元素大于第一个检索的后者元素的话则直接跳过for循环

old[j+1]=save使得检索元素等于save

二:如果检索元素小于第一个检索的后者元素的话则检索元素更新为第一个检索的后者元素

old[j+1]=save使得第一个检索的后者元素等于save

三:一和二的old[j+1]=save的差别就是j--是否执行了,j产生了变化

四:二的情况如果一直继续下去,第二个、第三个检索的后者元素,以检索元素继承第一个检索的后者元素  依次往前移,直到

old[j+1]=save使得检索元素移动到空出来的位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值