#include <bits/stdc++.h>
using namespace std;
int main()
{
int n; // 人数
cin >> n;
string arr[n]; // 存储性别的数组
double brr[n]; // 存储身高的数组
// 读取每个人的性别和身高
for (int i = 0; i < n; i++)
{
cin>>arr[i]>>brr[i];
}
// 对男性根据身高从高到低进行冒泡排序
for (int i = 0; i < n; i++)
{
if(arr[i]=="male"){
for (int j = 0; j < n; j++)
{
if(arr[j]=="male") {
if(brr[i]<brr[j]){
// 交换身高和性别
swap(arr[i],arr[j]);
swap(brr[i],brr[j]);
}
}
}
}
}
// 对女性根据身高从低到高进行冒泡排序
for (int i = 0; i < n; i++)
{
if(arr[i]=="female"){
for (int j = 0; j < n; j++)
{
if(arr[j]=="female") {
if(brr[i]>brr[j]){
// 交换身高和性别
swap(arr[i],arr[j]);
swap(brr[i],brr[j]);
}
}
}
}
}
// 输出所有男性的身高(从高到低)
for (int i = 0; i < n; i++)
{
if(arr[i]=="male") {
cout<< fixed << setprecision(2)<<brr[i]<<" ";
}
}
// 输出所有女性的身高(从低到高)
for (int i = 0; i < n; i++)
{
if(arr[i]=="female") {
cout<< fixed << setprecision(2)<<brr[i]<<" ";
}
}
}
代码逻辑如下:
- 输入人数 n。
- 创建两个数组 arr 和 brr,用于存储每个人的性别和身高。
- 通过循环读取每个人的性别和身高,存储到对应的数组中。
- 使用冒泡排序对男性按照身高从高到低进行排序,交换身高和性别。
- 使用冒泡排序对女性按照身高从低到高进行排序,交换身高和性别。
- 输出排序后的男性身高,保留两位小数。
- 输出排序后的女性身高,保留两位小数。