目录
插入排序
时间复杂度:O(N^2)
空间复杂度:O(1)
稳定性:稳定
void InsertSort(int* arr, int size)
{
for (int i = 0; i < size - 1; i++)
{
int end = i;
int tmp = arr[end + 1];
while (end >= 0)
{
if (arr[end] > tmp)
arr[end + 1] = arr[end];
else
break;
end--;
}
arr[end + 1] = tmp;
}
}
希尔排序
时间复杂度:O(N * logN)
空间复杂度:O(1)
稳定性:不稳定
void ShellSort(int* arr, int size)
{
int gap = size;
while (gap > 1)
{
gap /= 2;
for (int i = 0; i < size - gap; i++)
{
int end = i;
int tmp = arr[end + gap];
while (end >= 0)
{
if (arr[end] > tmp)
arr[end + gap] = arr[end];
else
break;
end -= gap;
}
arr[end + gap] = tmp;
}
}
}