基本思路
希尔排序是”直接插入排序“的改进版,也称为“缩小增量排序”。基本原理:先将待排序的数组元素分成多个序列,然后对每个子序列分别进行直接插入排序,最后再对所有元素进行一次直接插入排序。
#include <iostream>
using namespace std;
void Insert_Sort(int * arr,int n)
{
int out;
int in;
int gap = n;
if(arr==NULL||n<0)
{
return ;
}
do
{
gap = gap/3+1;
for(out = gap;out<n;out+=gap)
{
int temp = arr[out];
in = out;
while(in+gap>0&&arr[in-gap]>temp)
{
arr[in] = arr[in-gap];
in-=gap;
}
arr[in] = temp;
}
}while(gap>1);
}