1 直接插入排序
//形参:数组地址,数组元素个数
void InsertSort(int *a, int size)
{
int i, j, tmp;
for (i = 1; i < size; i++)
{
tmp = a[i];
for (j = i - 1; j >= 0; j--)
{
if (tmp < a[j])
{
a[j + 1] = a[j]; //a[i] 被a[j]覆盖
count++;
}
else
{
break;
}
}
a[j + 1] = tmp;
}
}
2 希尔排序
//形参:数组地址,数组元素个数
void ShellSort(int *a, int size)
{
int i, j, tmp, h;
for (h = size / 2; h > 0; h /= 2)
{
for (i = h; i < size; i++)
{
tmp = a[i];
for (j = i - h; j >= 0; j -= h)
{
if (tmp < a[j])
{
a[j + h] = a[j];
}
else
{
break;
}