希尔排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void shell(vector<int>& nums)
{
int size = nums.size();
int h = 1;

while (h < (size / 3))
{
h = 3 * h + 1;
}

while (h >= 1)
{
for (int i = h; i < size; i++)
{
for (int j = i; j >= h && nums[j] < nums[j - h]; j -= h)
{
swap(nums, j, j - h);
}
for (int k = 0; k < nums.size(); k++)
cout << nums[k] << " ";
cout << endl;
}
h /= 3;
}
}

京东面试题2017年:

对关键字{10,20,8,25,35,6,18,30,5,15,28}序列进行希尔排序,取增量d =5时,排序结果为()

1
2
3
4
A. {6,18,8,5,15,10,20,30,25,35,28}
B. {10,18,8,5,15,6,20,30,25,35,28}
C. {10,20,8,5,15,6,18,30,25,35,28}
D. {10,20,30,5,8,6,15,18,25,28,35}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!