1 条题解
-
0
希尔排序:
#include <bits/stdc++.h> using namespace std; // 定义一个结构体来存储每个人的信息 struct Person { string gender; float height; }; // 自定义希尔排序函数:男生按身高从矮到高排序 void shellSortMale(vector<Person>& males) { int n = males.size(); // 选择增量序列 for (int gap = n / 2; gap > 0; gap /= 2) { for (int i = gap; i < n; i++) { Person temp = males[i]; int j = i; while (j >= gap && males[j - gap].height > temp.height) { males[j] = males[j - gap]; j -= gap; } males[j] = temp; } } } // 自定义希尔排序函数:女生按身高从高到矮排序 void shellSortFemale(vector<Person>& females) { int n = females.size(); // 选择增量序列 for (int gap = n / 2; gap > 0; gap /= 2) { for (int i = gap; i < n; i++) { Person temp = females[i]; int j = i; while (j >= gap && females[j - gap].height < temp.height) { females[j] = females[j - gap]; j -= gap; } females[j] = temp; } } } int main() { int n; cin >> n; vector<Person> males, females; // 读取每个人的性别和身高,并分类存储 for (int i = 0; i < n; i++) { string gender; float height; cin >> gender >> height; if (gender == "male") { males.push_back({gender, height}); } else { females.push_back({gender, height}); } } // 对男生按身高从矮到高排序 shellSortMale(males); // 对女生按身高从高到矮排序 shellSortFemale(females); // 输出排好队的结果,男生在前,女生在后 for (int i = 0; i < males.size(); i++) { printf("%.2f ", males[i].height); } for (int i = 0; i < females.size(); i++) { printf("%.2f ", females[i].height); } return 0; }
- 1
信息
- ID
- 1129
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 10
- 已通过
- 5
- 上传者