(C++)按照英雄年龄从小到大进行排序(结构体、冒泡排序)

按照英雄的年龄从小到大进行排序
(冒泡排序、结构体)

#include<iostream>
using namespace std;
#include<string>

struct Hero
{
	string name;
	int age;
	string sex;
};
//1.设计英雄结构体
struct Hero heroArray[5] = {
	{ "刘备",23,"男" },
	{ "关羽",22,"男" },
	{ "张飞",20,"男" },
	{ "赵云",21,"男" },
	{ "貂蝉",19,"女" }
};
void bubbleSort(struct  Hero heroArray[], int len)
{
	for (int i = 0; i < len - 1; i++)
	{
		for (int j = 0; j < len - i - 1; j++)
		{
			if (heroArray[j].age > heroArray[j + 1].age)
			{
				struct Hero temp = heroArray[j];
				heroArray[j] = heroArray[j + 1];
				heroArray[j + 1] = temp;
			}
		}
	}
}
void printHero(struct Hero heroArray[],int len)
{
	cout << "排序后输出" << endl;
	for (int i = 0; i < len; i++)
	{
		cout << "姓名:" << heroArray[i].name << "年龄:"
			<< heroArray[i].age << "性别:"
			<< heroArray[i].sex << endl;
	}
}
int main()
{

	//2.创建数组存放五名英雄
	
	int len = sizeof(heroArray) / sizeof(heroArray[0]);
	cout << "排序前输出" << endl;
	for (int i = 0; i < len; i++)
	{
		cout << "姓名:" << heroArray[i].name << "年龄:" 
			<< heroArray[i].age << "性别:"
			<< heroArray[i].sex << endl;
		}
	//3.对数组进行排序,按年龄进行升序排序
	bubbleSort(heroArray, len);
	//4.将排序后结果打印输出
	printHero(heroArray, len);


	system("pause");
 }

运行结果:
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用结构体来实现按照宽高排序,具体代码如下: ```c++ #include <iostream> #include <algorithm> using namespace std; struct Rectangle{ int length; int width; int height; }; bool cmp(Rectangle r1, Rectangle r2){ if(r1.width != r2.width){ return r1.width < r2.width; } else if(r1.height != r2.height){ return r1.height < r2.height; } else{ return r1.length < r2.length; } } int main(){ Rectangle rect[100]; // 输入数据 for(int i=0; i<100; i++){ cin >> rect[i].length >> rect[i].width >> rect[i].height; } // 排序 sort(rect, rect+100, cmp); // 输出结果 for(int i=0; i<100; i++){ cout << rect[i].length << " " << rect[i].width << " " << rect[i].height << endl; } return 0; } ``` 其中,结构体 `Rectangle` 表示矩形,包括长度、宽度和高度三个属性。函数 `cmp` 用来比较两个矩形的大小关系,按照宽度、高度、长度的顺序进行比较。使用 `sort` 函数对矩形数组进行排序,最后输出排序后的结果。 ### 回答2: 根据题目所给条件,假设有100个组,每个组的长宽高都需要按照从小到大的顺序排序。为了便于解释,我们假设每个组的长宽高分别用三个数字表示。 首先,我们可以将所有组的长宽高存储在一个多维数组中,该数组的大小为100x3。每一行表示一个组,每一列分别代表该组的长、宽、高。 接下来,我们可以使用冒泡排序算法对每个组的长宽高进行排序冒泡排序算法的基本思想是从第一个元素开始,依次比较相邻的两个元素的大小,并根据需要进行交换,直至最后一个元素。通过重复这一过程,可以确保最小的元素排在前面。 具体地,我们可以从第一组开始,依次遍历到第100组。对于每一组,我们从长、宽、高这三个数字中选取一个进行比较与交换。假设我们选择按照长来排序,那么我们首先比较第一组的长与第二组的长,如果第一组的长大于第二组的长,则交换这两个组的位置;接着再比较第二组的长与第三组的长,如果第二组的长大于第三组的长,则再次交换位置。以此类推,直至第100组。 当完成第一轮遍历后,我们可以确保最长的组已经排在最后。然后,我们进行第二轮遍历,但这次只需要遍历到倒数第二组即可。通过这样的多轮遍历,我们最终可以确保整个数组中的所有组的长都按照从小到大的顺序排列。 最后,我们将排好序的长宽高数组输出即可得到100组长宽高按从小到大排序后的结果。 ### 回答3: 首先,我们需要清楚三个数值的大小关系,以便进行排序。然后,我们可以使用排序算法来按照从小到大的顺序对这100组长宽高进行排序。 一种可能的方法是使用冒泡排序。我们可以先比较前两组的长宽高,如果前一组的长宽高大于后一组的长宽高,那么交换这两组的位置。然后,我们继续比较第二组和第三组的长宽高,继续进行交换操作,直到最后一组和倒数第二组的长宽高比较完。这样一次冒泡排序,我们可以确保最大的一组长宽高已经排在了最后。 接下来,我们需要进行多次冒泡排序,重复进行前面的比较和交换操作。每次冒泡排序,我们可以排好一组长宽高的顺序。所以,进行100组的排序,我们需要进行99次冒泡排序。 在每次冒泡排序中,我们不仅要比较长宽高的大小关系,还要将三个数值对应的组全都交换位置,以保持它们的一致性。这样,我们可以确保每组的长宽高都按照从小到大的顺序排列。 最终,经过99次冒泡排序操作,我们可以得到所有100组长宽高按从小到大排序结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值