«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как отсортировать двумерный массив в C++ с помощью встроенных функций или пользовательских методов?

Как отсортировать двумерный массив в C++ с помощью встроенных функций или пользовательских методов?

Опубликовано 20 ноября 2024 г.
Просматривать:406

How do I sort a 2D array in C   using built-in functions or custom methods?

Сортировка двумерного массива в C с помощью встроенных функций или альтернативных методов

Сортировка двумерного массива в C представляет собой уникальную задачу, поскольку встроенные функции, такие как std::sort(), обычно предназначены для одномерных массивов. Однако в определенных случаях вам может потребоваться отсортировать 2D-массив на основе определенных критериев, например, сравнить только значения первого столбца.

Использование std::qsort

Хотя в C отсутствует встроенная функция для сортировки по нескольким столбцам, std::qsort() предлагает универсальное решение. Эта функция принимает указатель на массив, размер массива, размер элементов внутри массива и функцию сравнения. Предоставляя пользовательскую функцию сравнения, вы можете указать критерии сортировки на основе определенных элементов массива.

Функция сравнения для пользовательской сортировки

Функция сравнения должна возвращать целочисленный результат на основе сравнения двух элементов массива. В случае двумерного массива вам потребуется доступ к отдельным элементам с помощью арифметики указателей. Рассмотрим следующий пример:

int qsort_compare(const void *arg1, const void *arg2) {
  int const *lhs = static_cast(arg1);
  int const *rhs = static_cast(arg2);
  return (lhs[0] 

Эта функция сравнения сравнивает первый элемент (эквивалент первого значения столбца) и возвращает соответствующий порядок на основе результата.

Пример реализации

Объединив std::qsort() и пользовательскую функцию сравнения, вы можете отсортировать 2D-массив в C следующим образом:

#include 
#include 

using namespace std;

int main() {
  int ar[5][2] = {
    {20, 11},
    {10, 20},
    {39, 14},
    {29, 15},
    {22, 23}
  };

  qsort(ar, 5, sizeof(*ar), qsort_compare);

  cout 

Вывод:

Sorted 2D Array:
10 20
20 11
22 23
29 15
39 14

Этот метод обеспечивает комплексное и эффективное решение для сортировки 2D-массивов в C, хотя он требует создания и использования специальной функции сравнения.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3