算法学习笔记(2)---插入排序

对于某个特定的场景,最快的排序算法可能与许多因素有关:例如关键值和卫星数据的先验知识,主机存储器的层次结构(高速缓存和虚拟存储)以及软件环境。

  1. 插入排序

    插入排序对于少量待排元素还是比较有效率的排序算法。其工作原理类似打牌:当开始抓牌时,左手中(右撇子哈)开始摸牌是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的每一张牌从右到左地进行比较,无论在什么时候,左手中的牌都是排好序的。

    具体实现为:

        p[0...i-1]已排完序,p[i...n]为待排序。接下来将a[i]插入p[0...i-1]中,设置哨兵key=a[i],将key逐个与a[0...i-1]中比较,如果a[j]>key则将a[j]向后推动一位,直到找到a[j]<=key,将key插入其中。

  1. 代码如下:

int sort(int *p, int n)
{
	int i,j;
	for (j=1; j<n; j++)
	{
		int key = p[j];
		i = j - 1;
		while (i>=0 && p[i] > key)
		{
			p[i+1] = p[i];
			i--;
		}
		p[i+1] = key;
	}
	return 0;
}


你可能感兴趣的:(算法学习笔记(2)---插入排序)