学习导航
一、插入排序基本介绍
①基本思想
②代码呈现
void Insertsort(int* arr, int sz)
{
for (int i = 1; i < sz; i++) // (1)
{
int end = i;
int tmp = arr[i];
while (end)
{
if (tmp < arr[end - 1])
{
arr[end] = arr[end - 1]; //(2)
end--;
}
else
break;
}
arr[end] = tmp; //(3)
}
}
③错误代码辨析
void Insertsort(int* arr, int sz)
{
for (int i = 1; i < sz; i++)
{
int end = i;
int tmp = arr[i];
while (end)
{
if (tmp < arr[end - 1])
{
arr[end] = arr[end - 1];
end--;
}
else
{
arr[end] = tmp;
break;
}
}
}
}
二、希尔排序基本介绍
①基本思想
②代码呈现
void Shellsort(int* arr, int sz)
{
int gap = sz;
while (gap > 1)
{
gap = gap / 3 + 1; //(1)
for (int i = gap; i < sz; i++) //(2)
{
int end = i;
int tmp = arr[end];
while (end >= gap) //(3)
{
if (tmp < arr[end - gap])
{
arr[end] = arr[end - gap];
end -= gap;
}
else
break;
}
arr[end] = tmp;
}
}
}