version one:
void InsertSort(int *list,int sum)
{
// int guard = list[0];
int temp,j;
for (int i = 1;i < sum;i++)
{
temp = list[i];
for (j = i-1;j >= 0;--j)
if (temp < list[j])
{
list[j+1] = list[j];
}//end if
else
{
list[j+1] = temp;
break;
}
}//for i
}
verison two:
void InsertionSort ( Elem R[ ], int n) {
// 对记录序列R[1..n]作直接插入排序。for ( i=2; i<=n; ++i ) {
if (R[i]<R[i-1]) {
R[0] = R[i]; // 复制为监视哨
for ( j=i-1; R[0].key < R[j].key; --j )
R[j+1] = R[j]; // 记录后移
R[j+1] = R[0]; // 插入到正确位置
}
}
} // InsertSort
and so on