#include <iostream>
#include <vector>
using namespace std;
void shellSort(vector<int>& nums) {
int len = nums.size();
int gap = len / 2; // 初始步长
while (gap > 0) {
// 对各个分组进行插入排序
for (int i = gap; i < len; i++) {
int j = i;
int temp = nums[j];
if (nums[j] < nums[j - gap]) {
while (j - gap >= 0 && temp < nums[j - gap]) {
nums[j] = nums[j - gap];
j -= gap;
}
nums[j] = temp;
}
}
gap /= 2; // 缩小步长
}
}
int main() {
vector<int> nums = { 3, 5, 2, 8, 6, 9, 1, 4, 7 };
shellSort(nums);
for (int num : nums) {
cout << num << " ";
}
cout << endl;
return 0;
}
希尔排序算法
最新推荐文章于 2024-09-14 21:15:53 发布