案例描述:
设计一个海贼世界的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名英雄。
通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。
要求:采用指针形式和数组形式分别实现
直接上代码:
#include<iostream>
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;
}
}
}
for (int i = 0; i < len; i++) {
cout << "姓名: " << arr[i].name << " 性别: " << arr[i].sex << " 年龄: " << arr[i].age << endl;
}
}
//指针法冒泡输出海贼团人员
void bubbleSort2(hero *p, int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++)
{
if ((p+j)->age > (p + j+1)->age)
{
hero temp = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = temp;
}
}
}
for (int i = 0; i < len; i++) {
cout << "姓名:" << (p + i)->name << " 性别:" << (p + i)->sex << " 年龄:" << (p + i)->age << endl;
}
}
//打印
void printHeros(hero* h, int len) {
for (int i = 0; i < len; i++) {
cout << "姓名:" << h->name << " 性别:" << h->sex << " 年龄:" << h->age << endl;
}
}
int main() {
struct hero arr[5] = {
{"路飞",22,"男"},
{"索隆",24,"男"},
{"娜美",21,"女"},
{"罗宾",26,"女"},
{"山治",23,"男"}
};
hero* p = arr;
int len = sizeof(arr) / sizeof(hero);
//数组法调用
bubbleSort(arr, len);
cout << "--------------------------海贼世界--分界线-------------------------------- " << endl;
//指针法调用
bubbleSort2(p, len);
/*printHeros(p1, len);*/
//数组指针法测试
//数组的声明
//int num[6] = {5,2,6,3,7,9};
//
//int* p = num;
排序徐算法
//for (int i = 5; i >= 0; i--) {
// for (int j = 0; j < i; j++) {
// if (*(p + j) > *(p + j + 1)) {
// int temp = *(p + j);
// *(p + j) = *(p + j + 1);
// *(p + j + 1) = temp;
// }
// }
//}
数组的输出
//for (int k = 0; k < 6; k++) {
// cout << num[k] << "\t";
//}
system("pause");
return 0;
}
输出结果:
姓名: 娜美 性别: 女 年龄: 21
姓名: 路飞 性别: 男 年龄: 22
姓名: 山治 性别: 男 年龄: 23
姓名: 索隆 性别: 男 年龄: 24
姓名: 罗宾 性别: 女 年龄: 26
--------------------------海贼世界--分界线--------------------------------
姓名:娜美 性别:女 年龄:21
姓名:路飞 性别:男 年龄:22
姓名:山治 性别:男 年龄:23
姓名:索隆 性别:男 年龄:24
姓名:罗宾 性别:女 年龄:26
请按任意键继续. . .