![]()
1 /**
2 * 排序算法之希尔排序
3 */
4 #include <iostream>
5 #include <vector>
6 using namespace std;
7
8 void sortXiEr(vector<int>& vec, int len) {
9 int i, j;
10 int increment = len;
11 while (increment > 1) {
12 increment = increment / 3 + 1;
13 for (i = increment; i < len; ++i) {
14 int key = vec[i];
15 j = i;
16 while (j >= increment && key < vec[j - increment]) {
17 vec[j] = vec[j - increment];
18 j -= increment;
19 }
20 vec[j] = key;
21 }
22 }
23 }
24
25 int main() {
26 vector<int> vec = {2,1,3,5,4};
27 int len = vec.size();
28 sortXiEr(vec, len);
29 for (int i = 0; i < len; ++i) {
30 cout << vec[i] << endl;
31 }
32 return 0;
33 }