"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como classifico uma matriz 2D em C++ usando funções integradas ou métodos personalizados?

Como classifico uma matriz 2D em C++ usando funções integradas ou métodos personalizados?

Publicado em 2024-11-20
Navegar:333

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

Classificar um array 2D em C com funções integradas ou métodos alternativos

Classificar um array 2D em C apresenta um desafio único, pois funções integradas como std::sort() são normalmente projetadas para arrays 1D. No entanto, há casos específicos em que você pode querer classificar uma matriz 2D com base em critérios específicos, como comparar apenas os valores da primeira coluna.

Utilizando std::qsort

Embora C não possua uma função integrada direta para classificação de várias colunas, std::qsort() oferece uma solução versátil. Esta função leva um ponteiro para um array, o tamanho do array, o tamanho dos elementos dentro do array e uma função de comparação. Ao fornecer uma função de comparação personalizada, você pode especificar os critérios de classificação com base em elementos específicos da matriz.

Função de comparação para classificação personalizada

A função de comparação deve retornar um resultado inteiro com base na comparação de dois elementos da matriz. No caso de uma matriz 2D, você precisaria acessar elementos individuais usando aritmética de ponteiros. Considere o seguinte exemplo:

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 função comparadora compara o primeiro elemento (equivalente ao valor da primeira coluna) e retorna uma ordem apropriada com base no resultado.

Exemplo de implementação

Combinando std::qsort() e a função de comparação personalizada, você pode classificar um array 2D em C da seguinte maneira:

#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 

Saída:

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

Este método fornece uma solução abrangente e eficiente para classificação de arrays 2D em C , embora exija a criação e o uso de uma função de comparação personalizada.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3