MST

星途 面试题库

面试题:C++ 指针在二维数组排序中的应用

给定一个二维整型数组,要求使用指针操作实现对该二维数组按行进行升序排序(每行内排序)。请编写相应的 C++ 代码,需考虑不同行的长度可能不同的情况。
34.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

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

void sortRows(int** arr, int rows, int* cols) {
    for (int i = 0; i < rows; ++i) {
        std::sort(arr[i], arr[i] + cols[i]);
    }
}

int main() {
    int rows = 3;
    int cols[] = {4, 3, 5};

    int** arr = new int*[rows];
    arr[0] = new int[cols[0]]{5, 3, 7, 1};
    arr[1] = new int[cols[1]]{9, 6, 4};
    arr[2] = new int[cols[2]]{2, 8, 10, 4, 6};

    sortRows(arr, rows, cols);

    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols[i]; ++j) {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
        delete[] arr[i];
    }
    delete[] arr;

    return 0;
}
  1. sortRows 函数
    • 接受一个指向指针的指针 arr,表示二维数组,rows 表示行数,cols 是一个数组,存储每一行的列数。
    • 使用 std::sort 对每一行进行排序,std::sort 是 C++ 标准库提供的排序函数,它对给定范围内的元素进行升序排序。
  2. main 函数
    • 定义行数 rows 和每一行的列数数组 cols
    • 动态分配二维数组 arr,并初始化每一行的数据。
    • 调用 sortRows 函数对二维数组按行排序。
    • 输出排序后的二维数组,并释放动态分配的内存,防止内存泄漏。