冒泡排序案例
需求案例:设计一个英雄结构体,包括成员姓名,年龄,性别;创建结构体数组,存放若干个英雄(<100)通过冒泡排序算法,将数组中英雄按年龄进行升序排列并且最终打印出结果
#include <iostream>
using namespace std;
#include<string>
//创建英雄结构体
struct hero
{
string name;
int age;
string sex;
};
//创建添加英雄的函数
void add(struct hero h[], int len)
{
for (int i = 0 ; i < len; i++)
{
string name;
cout << "请输入第" << i + 1 << "个英雄的名字" << endl;
cin >> name;
h[i].name = name;
int age;
cout << "请输入第" << i + 1 << "个英雄的年龄" << endl;
cin >> age;
h[i].age = age;
string sex;
cout << "请输入第" << i + 1 << "个英雄的性别" << endl;
cin >> sex;
h[i].sex = sex;
//每添加一个清屏一次增加程序简洁性
system("pause");
system("cls");
}
cout << "输入完成开始排序" << endl;
}
//创建冒泡排序函数
void sort(struct hero h[], int len)
{
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (h[j].age > h[j + 1].age)
{
//创建一个临时结构体来存储
struct hero temp = h[j + 1];
h[j + 1] = h[j];
h[j] = temp;
}
else
{
continue;
}
}
}
}
//创建一个打印结构体的函数
void print(struct hero h[], int len)
{
cout << "排序结果为" << endl;
for (int i = 0; i < len; i++)
{
cout << h[i].name << '=' << endl;
cout << '\t' << "性别" << endl;
cout << '\t' << h[i].sex << endl;
cout << '\t' << "年龄" << endl;
cout << '\t' << h[i].age << endl;
}
}
int main()
{
struct hero h[100];
cout << "您要输入几个英雄进行排序呀?" << endl;
int count;
cin >> count;
add(h, count);
sort(h, count);
print(h, count);
return 0;
}