您的位置:首页 > 其它

排序算法(5)-希尔排序

2016-06-05 11:08 190 查看
/*
排序算法-希尔排序
*/
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;          // 缩减增量

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  希尔排序