【C++】结构体应用案例 2 - 结构体数组冒泡排序

目录

1、缘起

2、案例描述

3、代码清单

4、总结


1、缘起

        最近(2023-04-23)学习完了 C++ 语言的结构体相关知识点,如 结构体数组结构体指针结构体嵌套结构体 和 结构体做函数参数。本篇博客围绕着这些知识点,编写了一个这些知识点的综合应用案例,希望能够对这些知识点加深印象和灵活应用。

2、案例描述

        设计一个英雄的结构体,包括成员 姓名年龄性别;创建结构体数组,数组中存放 5 名英雄。通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。

五名英雄信息如下:

{"刘备",24,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"},

3、代码清单

#include<iostream>
#include<string>

using namespace std;

//函数声明
void BubbleSortHero(struct Hero arr[], int len);

//定义一个英雄的结构体
struct Hero
{
	string name;
	int age = 0;
	string gender;
};

int main()
{
	//定义一个英雄的结构体数组
	struct Hero arr[5] =
	{
		{"刘备",24,"男"},
		{"关羽",22,"男"},
		{"张飞",20,"男"},
		{"赵云",21,"男"},
		{"貂蝉",19,"女"}
	};

	//求数组中元素的个数
	int len = sizeof(arr)/sizeof(arr[0]);

	//定义一个函数,将数组中的英雄按照年龄进行升序排序
	BubbleSortHero(arr,len);

	//打印结构体数组中的元素
	for (int i = 0; i < 5; i++)
	{
		cout << "姓名:" << arr[i].name << "  ";
		cout << "年龄:" << arr[i].age << "  ";
		cout << "性别:" << arr[i].gender <<endl;
	}
	cout << endl;

	system("pause");
	return 0;
}	

void BubbleSortHero(struct Hero arr[], int len)
{
	for (int i = 0; i < len - 1; i++)
	{
		//标志位,假设在排序过程中剩余已排好序
		int flag = 1;

		for (int j = 0; j < len - 1 - i; j++)
		{
			//每一次冒泡排序
			if (arr[j].age > arr[j + 1].age)
			{
				struct Hero temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
				flag = 0;
			}
		}

		//在排序过程中已排好序了,就不会有数据交换
		//即标志位就不会重新被赋值
		if (flag == 1)
		{
			break; //跳出排序轮数循环
		}
	}
}

4、总结

        这个应用案例涉及了 结构体数组经典的冒泡排序算法,通过这个案例可以将这两块知识点了熟于心。本期的分享总结就到这里了,如果有疑问的小伙伴,我们在评论区交流嗷,笔者必回,我们下期再见啦 !

        

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aperion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值