【玩转九大排序①】插入排序 + 希尔排序(思想与算法实现)
学习导航
一、插入排序基本介绍
①基本思想
②代码呈现
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
break;
}
arr[end] = tmp;
}
}
③错误代码辨析
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;
for (int i = gap; i < sz; i++)
{
int end = i;
int tmp = arr[end];
while (end >= gap)
{
if (tmp < arr[end - gap])
{
arr[end] = arr[end - gap];
end -= gap;
}
else
break;
}
arr[end] = tmp;
}
}
}