MST

星途 面试题库

面试题:C++ 冒泡排序在类中的应用

假设你有一个自定义的C++ 类,类中有多个成员变量,现在需要对该类对象的数组使用冒泡排序,按照其中一个成员变量的值进行升序排序。请给出类的定义以及冒泡排序的实现代码,并解释如何处理对象比较的逻辑。
16.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>
#include <string>

// 自定义类
class MyClass {
public:
    int member1;
    std::string member2;

    // 构造函数
    MyClass(int m1, const std::string& m2) : member1(m1), member2(m2) {}
};

// 冒泡排序函数
void bubbleSort(MyClass arr[], int n) {
    for (int i = 0; i < n - 1; ++i) {
        for (int j = 0; j < n - i - 1; ++j) {
            // 按照member1进行升序比较
            if (arr[j].member1 > arr[j + 1].member1) {
                MyClass temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

解释对象比较的逻辑

  1. 比较依据:在冒泡排序的内层循环中,使用if (arr[j].member1 > arr[j + 1].member1)语句来比较相邻两个MyClass对象的member1成员变量。如果前一个对象的member1大于后一个对象的member1,则交换这两个对象的位置。
  2. 交换操作:通过创建一个临时的MyClass对象temp,将arr[j]的值保存到temp中,然后将arr[j + 1]的值赋给arr[j],最后将temp的值赋给arr[j + 1],完成两个对象的交换,从而实现按照member1成员变量的升序排序。