21xrx.com
2024-12-22 20:56:37 Sunday
登录
文章检索 我的文章 写文章
C++ 结构体排序方法
2023-07-05 05:40:36 深夜i     --     --
C++ 结构体 排序方法

C++ 是一种非常强大、灵活的编程语言,它支持很多数据结构,其中结构体就是其中之一。结构体是由多个不同数据类型的变量组成的复合类型,它们在 C++ 中被广泛用于存储和组织数据。

在实际应用中,我们经常需要将结构体中的数据按照一定的规则进行排序,这样可以更好地处理数据和进行统计分析等工作。下面介绍几种 C++ 结构体排序方法。

1. 使用 STL 中的 sort 函数

在 C++ 标准库中,sort 函数可以对数组和容器中的元素进行排序,它采用快速排序算法实现。我们可以使用 sort 函数对结构体按照指定的规则进行排序,示例代码如下:


#include <algorithm>

#include <iostream>

#include <vector>

using namespace std;

// 定义结构体类型

struct student

  int id;

  string name;

  int age;

;

// 自定义比较函数,按照学生 ID 进行升序排序

bool cmp(const student &a, const student &b)

  return a.id < b.id;

int main() {

  // 定义学生数组

  student arr[] = { 18, "Jerry", "Mike" };

  

  // 计算学生数组长度

  int len = sizeof(arr) / sizeof(arr[0]);

  

  // 使用 sort 函数按照学生 ID 进行升序排序

  sort(arr, arr+len, cmp);

  

  // 输出排序结果

  for (int i = 0; i < len; i++) {

    cout << "ID: " << arr[i].id << ", Name: " << arr[i].name << ", Age: " << arr[i].age << endl;

  }

  

  return 0;

}

2. 使用 std::stable_sort 函数

与 sort 函数一样,std::stable_sort 也可用于对结构体进行排序,而且它是稳定排序,可以保持相等元素的原有顺序,示例代码如下:


#include <algorithm>

#include <iostream>

#include <vector>

using namespace std;

// 定义结构体类型

struct student

  int id;

  string name;

  int age;

;

// 自定义比较函数,按照学生 ID 进行升序排序

bool cmp(const student &a, const student &b)

  return a.id < b.id;

int main() {

  // 定义学生向量

  vector<student> vec = { 3, 2, 17 };

  

  // 使用 stable_sort 函数按照学生 ID 进行升序排序

  stable_sort(vec.begin(), vec.end(), cmp);

  

  // 输出排序结果

  for (auto s : vec)

    cout << "ID: " << s.id << "

  

  return 0;

}

3. 使用冒泡排序算法

冒泡排序算法是一种简单的排序算法,它可以应用于各种数据类型的排序,包括结构体。示例代码如下:


#include <iostream>

#include <string>

using namespace std;

// 定义结构体类型

struct student

  int id;

  string name;

  int age;

;

// 自定义比较函数,按照学生 ID 进行升序排序

bool cmp(const student &a, const student &b)

  return a.id < b.id;

int main() {

  // 定义学生数组

  student arr[] = { 3, 19, "Mike" };

  

  // 计算学生数组长度

  int len = sizeof(arr) / sizeof(arr[0]);

  

  // 使用冒泡排序算法按照学生 ID 进行升序排序

  for (int i = 0; i < len-1; i++) {

    for (int j = 0; j < len-i-1; j++) {

      if (arr[j].id > arr[j+1].id) {

        swap(arr[j], arr[j+1]);

      }

    }

  }

  

  // 输出排序结果

  for (int i = 0; i < len; i++) {

    cout << "ID: " << arr[i].id << ", Name: " << arr[i].name << ", Age: " << arr[i].age << endl;

  }

  

  return 0;

}

综上所述,C++ 结构体的排序方法主要有三种:使用 STL 中的 sort 函数、使用 std::stable_sort 函数,以及使用冒泡排序算法。根据实际需求和数据规模的不同,可以选择适合自己的排序方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复