案例描述:
设计一个英雄的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名英雄。
通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。
{“刘备”,23,“男”},
{“关羽”,22,“男”},
{“张飞”,20,“男”},
{“赵云”,21,“男”},
{“貂蝉”,19,“女”},
#include <iostream>
#include <string>
using namespace std;
struct Hero
{
string name;
int age;
string sex;
};
int main() {
Hero hArr[5] = {
{ "刘备", 23, "男" },
{ "关羽",22,"男" },
{ "张飞",20,"男" },
{ "赵云",21,"男" },
{ "貂蝉",19,"女" },
};
int len = sizeof(hArr) / sizeof(hArr[0]);
int temp;
//根据年龄冒泡排序 如何将年龄对应的信息也排序呢????考虑指针?
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (hArr[j].age > hArr[j+1].age)
{
temp = hArr[j].age;
hArr[j].age = hArr[j + 1].age;
hArr[j + 1].age = temp;
}
}
}
for (int i = 0; i < len; i++) {
cout << hArr[i].name << " " << hArr[i].age << " " << hArr[i].xingbie << endl;
}
system("pause");
return 0;
}
由于自己的疏忽 总是想着根据年龄冒泡排序 排序 其实只控制冒泡排序if条件语句的年龄即可 条件下的内容直接是整个结构体数组即可 真笨呀
将程序结构化 修改后 排序功能写成函数之后的代码
//英雄结构体
#include <iostream>
#include <string>
using namespace std;
struct hero
{
string name;
int age;
string sex;
};
//冒泡排序
void bubbleSort(hero arr[] , int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
if (arr[j].age > arr[j + 1].age)
{
hero temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//打印数组
void printHeros(hero arr[], int len)
{
for (int i = 0; i < len; i++)
{
cout << "姓名: " << arr[i].name << " 性别: " << arr[i].sex << " 年龄: " << arr[i].age << endl;
}
}
int main() {
struct hero arr[5] =
{
{"刘备",23,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"},
};
int len = sizeof(arr) / sizeof(hero); //获取数组元素个数
bubbleSort(arr, len); //排序
printHeros(arr, len); //打印
system("pause");
return 0;
}