插入排序是最简单的排序算法之一,插入排序由N-1趟排序组成。对于P=1到P=N-1,插入排序保证从位置0到P上的元素为已排序状态。
例如:我们给定一个数组a,
初始 23 5 46 37 21 17
在p=1 5 23 46 37 21 17
在p=2 5 23 46 37 21 17
在p=3 5 23 37 46 21 17
在p=4 5 21 23 37 46 17
在p=5 5 17 21 23 37 46
插入排序例程c语言:
void InsertionSort(ElementType A[ ],int n)
{
int i,j;
Element Type Tmp;
for(i;i<n;i++)
{
for(j=i;j>0;j--)
{
if(A[j]<A[j-1])
{
Tmp = A[j];
A[j] = A[j-1];
A[j-1] = Tmp;
}
}
}
}
更简洁算法:
void InsertionSort(ElementType A[ ],int n)
{
int P,j;
Element Type Tmp;
for(P;P<n;P++)
{
Tmp =A[P];
for(j=P;j>0&&A[j-1]>Tmp;j--)
A[j] = A[j-1];
A[j] = Tmp;
}
}