"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo clasifico una matriz 2D en C++ usando funciones integradas o métodos personalizados?

¿Cómo clasifico una matriz 2D en C++ usando funciones integradas o métodos personalizados?

Publicado el 2024-11-20
Navegar:845

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

Ordenar una matriz 2D en C con funciones integradas o métodos alternativos

Ordenar una matriz 2D en C presenta un desafío único, ya que Las funciones integradas como std::sort() normalmente están diseñadas para matrices 1D. Sin embargo, hay casos específicos en los que es posible que desee ordenar una matriz 2D según criterios específicos, como comparar solo los valores de la primera columna.

Utilizando std::qsort

Si bien C carece de una función incorporada directa para la clasificación de varias columnas, std::qsort() ofrece una solución versátil. Esta función toma un puntero a una matriz, el tamaño de la matriz, el tamaño de los elementos dentro de la matriz y una función de comparación. Al proporcionar una función de comparación personalizada, puede especificar los criterios de clasificación basados ​​en elementos de matriz específicos.

Función de comparación para clasificación personalizada

La función de comparación debe devolver un resultado entero basado en la comparación de dos elementos de la matriz. En el caso de una matriz 2D, necesitará acceder a elementos individuales mediante aritmética de punteros. Considere el siguiente ejemplo:

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

Esta función de comparación compara el primer elemento (equivalente al valor de la primera columna) y devuelve un orden apropiado según el resultado.

Ejemplo de implementación

Combinando std::qsort() y la función de comparación personalizada, puede ordenar una matriz 2D en C de la siguiente manera:

#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 

Salida:

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

Este método proporciona una solución integral y eficiente para ordenar matrices 2D en C, aunque requiere la creación y el uso de una función de comparación personalizada.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3