MST

星途 面试题库

面试题:C++ 函数指针在回调函数场景中的运用

假设有一个排序函数 `void sortArray(int* arr, int size, bool (*compare)(int, int))`,该函数通过比较函数 `compare` 对整数数组 `arr` 进行排序。请编写一个 `compare` 函数,使得 `sortArray` 能够实现降序排序,并在 `main` 函数中调用 `sortArray` 对一个给定的整数数组进行降序排序。要求使用函数指针来实现回调机制。
32.9万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

// 比较函数,实现降序排序
bool compareDescending(int a, int b) {
    return a > b;
}

// 排序函数
void sortArray(int* arr, int size, bool (*compare)(int, int)) {
    for (int i = 0; i < size - 1; ++i) {
        for (int j = 0; j < size - i - 1; ++j) {
            if (!compare(arr[j], arr[j + 1])) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {5, 3, 9, 1, 7};
    int size = sizeof(arr) / sizeof(arr[0]);

    // 使用降序比较函数调用排序函数
    sortArray(arr, size, compareDescending);

    // 输出排序后的数组
    for (int i = 0; i < size; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

上述代码实现了:

  1. 定义了一个 compareDescending 函数,用于实现降序比较逻辑。
  2. sortArray 函数接受一个数组、数组大小和一个比较函数指针,通过比较函数实现排序。
  3. main 函数中,定义了一个数组并调用 sortArray 函数,使用 compareDescending 函数指针实现降序排序,并输出排序后的数组。