C++实现希尔排序算法
- 指定格式输入字母(字母间以空格分隔),按照希尔排序输出指定格式
#include<iostream>
#include<vector>
#include<string>
using namespace std;
void shellSort(vector<string>& arr)
{
int n = arr.size();
//初始步长设置为数组长度的一半,后面逐步缩小步长直到值为1为止
for (int gap = n / 2; gap > 0; gap /= 2) {
//对每个步长进行插入排序
for (int i = gap; i < n; i++) {
string temp = arr[i];
int j;
//对每个分组进行插入排序
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
arr[j] = arr[j - gap];
}
arr[j] = temp;
}
}
}
int main() {
vector<string> letters;
string input;
while (cin >> input) {
letters.push_back(input);
//只读取一行内容
if (cin.get() == '\n') break;
}
shellSort(letters);
for (const auto& letter : letters) {
cout << letter << " ";
}
return 0;
}
人生如逆旅
我亦是行人

浙公网安备 33010602011771号