1.希尔排序
基本思想:设待排序对象序列有n个对象,首先取一个整数gap<n 作为
间隔,将全部对象分为gap个子序列,所有距离为gap的对象放在同一个子序列
中,在每个子序列中分别实行直接插入排序,然后缩小间隔gap,例如取
gap = gap/2 ,重复上述子序列划分和排序工作,直到最后取gap==1,将
所有对象放在同一个序列中排序为止。
2.代码实现
//希尔排序
//升序
template <class Type>
BOOL ShellSort(Type *pData, int nLen)
{
int nGat;
nGat = nLen/2;
Type tempData;
while(nGat)
{
for(int i=nGat; i<nLen; i++)
{
tempData = pData[i];
int j = i;
while((j>=nGat) && (tempData < pData[j-nGat]))
{
pData[j] = pData[j-nGat];
j -= nGat;
}
pData[j] = tempData;
}
nGat /= 2; //间隔缩小
}
return TRUE;
}