C++实现希尔排序算法

  1. 指定格式输入字母(字母间以空格分隔),按照希尔排序输出指定格式
#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;
}
posted @ 2024-12-12 23:52  相遇就是有缘  阅读(67)  评论(0)    收藏  举报