插入排序

最近在开数据结构与算法,把看到的总结一下,参考资料算法导论。现在是最简单的插入排序:

public static function InstertSort(p_list:Array):void
		{
			var a:Array = p_list;
			var key:Number;
			var i:int;
			//迭代
			for(var j:int = 1; j<a.length; j++){
				key = a[j];//标记
				i = j-1;
				//当对比的值比目标值大时需要执行排序,因为左边都是排好序的,所以当出现条件不符的时候,不需要继续往下对比
				while(i>=0 && a[i]>key){
					a[i+1] = a[i];//对比值比目标值大,对比值需要往后移一位
					i--;//在比较下一个看是否需要移位
				}
				// 比较完成之后置换a[i+1] a[j] 因为假如执行过排序,那么a[i+1]已经被移位了
				if(i != j-1){
					a[i+1] = key;
				}
			}
		}


插入算法需要注意的是,肯定有一边是排好序的,你只需要比较一下,目标值和要对比的值谁大,一直比到比目标值小的那个值为止,这时循环就可以中断了,然后,既然它要插进去,那么后面的值都要移位,给它腾位置。

//-------------------------------------------------------------------------------------------

结果:

输入:1,3,20,45,78,6,4,76,9,12,54
输出:1,3,4,6,9,12,20,45,54,76,78


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值