码迷,mamicode.com
首页 > 编程语言 > 详细

算法导论(3)插入排序

时间:2016-04-24 12:37:37      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

#pragma once
/*
插入排序算法,相当于抓牌时,手里的牌都是已经排序好的,新抓起的牌从右向左依次和手里的牌进行比较
每比较依次都要后移一位多出一个空位,以便新牌插入到正确的位置
*/
template<class T>
void InsertSort(T *src, int length)
{
	for (int j = 1; j < length;j++) {
		T key = src[j];   //待插入的牌

		//将src[j]插入到src[j-1]-src[0]
		int i = j - 1;
		while (i >= 0 && key < src[i]) {   //待插入的牌小于手中标号为i的牌
			src[i + 1] = src[i];           //说明这张牌还要继续向前插入,于是前面挪出一个位置
			i--;                           //继续和前面一张进行比较
		}
		//退出循环的条件是i减小到-1,或者是key大于src[i]
		src[i + 1] = key;
	}
}

算法导论(3)插入排序

标签:

原文地址:http://www.cnblogs.com/ql698214/p/5426695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!