// 排序实现的接口
// 插入排序
//先将tmp的值存起来,与a[end]进行比较,如果比它小,end+1的位置就是end位置的值
//然后再将end自减,再去跟tmp的值进行比较如果比它小,循环将停止,当前end位置的后一个位置就是tmp的值
void InsertSort(int* a, int n)
{
for (int i = 1; i < n; i++)
{
int end = i - 1;
int tmp = a[i];
while (end >= 0)
{
if (a[end] > tmp)
{
a[end + 1] = a[end];
--end;
}
else
{
break;
}
}
a[end + 1] = tmp;
}
}
// 希尔排序
//希尔排序的方法就是插入排序的优化,插入排序的间隔是1,而希尔排序的间隔可以是2/3
//多组并排
//gap越大大的数可以更快的到后面,小的数可以更快的到前面
//gap越小,大的数挪动的越慢,但是它越接近有序
//void ShellSort(int* a, int n)
//{
// int gap = 3;
// for (int i = 0; i < n - gap; i++)
// {
// int end = i;
// int tmp = a[end + gap];
// while (end >= 0)
// {
// if (a[end] > tmp)
// {
// a[end + gap] = a[end];
// end -= gap;
// }
// else
// {
// break;
// }
// }
// a[end + gap] = tmp;
// }
//}
//