/* 插入排序的变种,通过增量这一特性,减少了数据比较和移动次数,是一种优化的插入排序 */
void shellSort(std::vector<int>& vec)
{
int rate = 2;
int increNum = vec.size() / rate;
while(increNum)
{
for (int i = increNum; i < vec.size(); i++)
{
int tmp = vec[i];
int j = i - increNum;
for (; j >= 0; j -= increNum)
{
if (vec[j] <= tmp)
{
break;
}
else
{
vec[j + increNum] = vec[j];
}
}
vec[j+increNum] = tmp;
}
rate *= 2;
increNum = vec.size() / rate;
}
}
希尔排序
最新推荐文章于 2023-11-28 16:53:17 发布