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 }