插入排序由N-1趟排序组成。对于P=1趟到P=N-1趟,插入排序保证位置0到位置P上的元素为已排序状态。实现代码如下。
/************************************************
*** insertSort.c
*** 插入排序的实现
*************************************************/
#include <stdio.h>
void insertSort( int A[], int n )
{
int i = 0;
int j = 0;
int nTmp = 0;
for (i=1; i<n; i++)
{
nTmp = A[i];
for (j=i; j>0 && A[j-1]>nTmp; j--)
{
A[j] = A[j-1];
}
A[j] = nTmp;
}
}
int main()
{
int i = 0;
int n = 13;
int nArray[13] = {81, 94, 11, 96, 12, 35, 17, 95, 28, 58, 41, 75, 15};
printf("The array before insertSort is: \n");
for (i=0; i<n; i++)
{
printf("%d ", nArray[i]);
}
printf("\n\n");
insertSort( nArray, n ); /** 调用插入排序 **/
printf("The array after insertSort is: \n");
for (i=0; i<n; i++)
{
printf("%d ", nArray[i]);
}
printf("\n");
return 0;
}