案例描述:设计一个英雄的结构体,包括成员姓名、年龄和性别。创建结构体数组,数组中存放五名英雄,通过冒泡排序的算法,将数组中的五名英雄按照年龄大小进行升序排序,最终打印排序后的结果
#include <iostream>
using namespace std;
#include <string>
struct hero {
string name;
int age;
string sex;
};
//冒泡排序实现年龄升序排列
void bubble(struct hero arr[], int len) {
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
if (arr[j].age > arr[j + 1].age) {
struct hero temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//打印排序后的顺序
void printall(struct hero arr[], int len) {
cout << "排序后:" << endl;
for (int i = 0; i < len; i++) {
cout << "姓名:" << arr[i].name
<< " 年龄:" << arr[i].age
<< " 性别:" << arr[i].sex << endl;
}
}
int main() {
struct hero arr[5] = {
{"刘备", 23, "男"},
{"关羽", 22, "男"},
{"张飞", 20, "男"},
{"赵云", 21, "男"},
{"貂蝉", 19, "女"}
};
int len = sizeof(arr) / sizeof(arr[0]);
cout << "排序前:" << endl;
for (int i = 0; i < len; i++) {
cout << "姓名:" << arr[i].name
<< " 年龄:" << arr[i].age
<< " 性别:" << arr[i].sex << endl;
}
bubble(arr, len);
cout << "排序后:" << endl;
printall(arr, len);
}
运行结果:
排序前:
姓名:刘备 年龄:23 性别:男
姓名:关羽 年龄:22 性别:男
姓名:张飞 年龄:20 性别:男
姓名:赵云 年龄:21 性别:男
姓名:貂蝉 年龄:19 性别:女
排序后:
排序后:
姓名:貂蝉 年龄:19 性别:女
姓名:张飞 年龄:20 性别:男
姓名:赵云 年龄:21 性别:男
姓名:关羽 年龄:22 性别:男
姓名:刘备 年龄:23 性别:男