黑马C++学习案例:
介绍:刚学习C++的小白一枚
注意:不是只交换年龄,而是整个英雄的数据都需要换!!!总是忘记,以此记录
1.创建英雄结构体
2.创建结构体数组
3.利用冒泡算法进行排序(冒泡算法要牢记)
4.打印
#include<iostream>
using namespace std;
struct Hero
{
string m_Name;
int m_Age;
string m_Sex;
};
void Bubblesort(struct Hero HeroArr[],int len)
{
for (int i = 0; i < len -1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (HeroArr[j].m_Age > HeroArr[j + 1].m_Age)
{
//只交换年龄
//int temp = HeroArr[j].m_Age;
//HeroArr[j].m_Age = HeroArr[j + 1].m_Age;
//HeroArr[j + 1].m_Age = temp;
struct Hero temp = HeroArr[j];//将struct Hero替换为int即可(交换的是整个英雄上的数据)
//交换英雄的数据而不是年龄,创建临时的英雄保存j
HeroArr[j] = HeroArr[j + 1];
HeroArr[j + 1] = temp;
}
}
}
}
void PrintHero(struct Hero HeroArr[],int len)
{
for (int i = 0; i < len; i++)
{
cout << "姓名:" << HeroArr[i].m_Name << " 年龄:" << HeroArr[i].m_Age
<< " 性别:" << HeroArr[i].m_Sex << endl;
}
}
int main()
{
struct Hero HeroArr[5] =
{
{"刘备",23,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"},
};
int len = sizeof(HeroArr) / sizeof(HeroArr[0]);
cout << "排序前打印:" << endl;
for (int i = 0; i < len; i++)
{
cout << "姓名:" << HeroArr[i].m_Name << " 年龄:" << HeroArr[i].m_Age
<< " 性别:" << HeroArr[i].m_Sex << endl;
}
cout << "排序后打印:" << endl;
Bubblesort(HeroArr, len);
PrintHero(HeroArr, len);
return 0;
}