基本思想就是将后面的元素插入到前面的已排序序列中。
#include "stdafx.h"
#define ElementType int
void InsertionSort(ElementType A[], int N)
{
int i = 0;
int j = 0;
ElementType tmp;
for (i=1; i<N; i++)
{
tmp = A[i];//保存位置i上的值
for (j=i; j>0 && A[j-1]>tmp; j--) //查看i之前的元素,寻找存放tmp的合适位置
{
A[j] = A[j-1];//移动比tmp大的元素
}
A[j] = tmp;//在位置j上放置tmp
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int A[10] = {3,5,9,7,1,4,2,0,8,6};
InsertionSort(A,10);
return 0;
}