/*
排序算法-希尔排序
*/
void shellSort(int *p,int count) {
int d = count/2; // 初始增量,以后逐次减半
int i,j,x; // 待使用的变量
while (d >=1) { // 按照增量循环,当增量等于1的时候,排序完成
for (i = d; i < count; i++) {
x = p[i]; // 获取增量分组的第二个数
j = i-d; // 在同一组内的前一个数据序号
for (;j >= 0 && x < p[j]; j-=d) {
p[j+d] = p[j]; // 向后移动位置
}
// 将数据放到该位置,是因为在上面for循环中j-=d,所以要先j+d,在放置数据
p[j+d] = x;
}
d/=2; // 缩减增量
}
}
排序算法(5)-希尔排序
最新推荐文章于 2024-09-16 14:44:06 发布