Maison > développement back-end > C++ > le corps du texte

Comment trier un tableau 2D par valeurs de colonnes en C ?

Mary-Kate Olsen
Libérer: 2024-11-08 12:24:01
original
392 Les gens l'ont consulté

How to Sort a 2D Array by Column Values in C  ?

Tri d'un tableau 2D par valeurs de colonne à l'aide de fonctions intégrées ou de méthodes personnalisées en C

En C, contrairement à Java, il n'y a pas de fonction intégrée directe qui peut trier un tableau 2D par valeurs de colonne spécifiques. Cependant, diverses approches peuvent être utilisées pour obtenir ce comportement de tri souhaité.

Utilisation des fonctions de la bibliothèque standard C

Une méthode consiste à utiliser la fonction std::qsort, qui est un algorithme de tri générique. En définissant une fonction de comparaison personnalisée, vous pouvez contrôler la logique de tri en fonction des valeurs des colonnes. Voici un exemple d'implémentation :

<code class="cpp">#include <iostream>
#include <algorithm>

int compareArrayColumns(int **lhs, int **rhs) {
  return (*lhs)[0] < (*rhs)[0];
}

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

  std::qsort(arr, 5, sizeof(*arr), (int (*)(const void *, const void *))compareArrayColumns);

  for (int i = 0; i < 5; ++i) {
    std::cout << arr[i][0] << " " << arr[i][1] << std::endl;
  }

  return 0;
}</code>
Copier après la connexion

Dans ce code, la fonction compareArrayColumns est utilisée pour comparer les valeurs de la première colonne de chaque ligne du tableau. Le tri est effectué à l'aide de la fonction std::qsort et le tableau 2D trié est imprimé.

Utilisation de méthodes personnalisées

Une autre approche consiste à créer des fonctions de tri personnalisées qui implémentent la logique souhaitée. Voici un exemple d'implémentation utilisant un tri à bulles :

<code class="cpp">#include <iostream>

void bubbleSortByColumn(int arr[][2], int size) {
  for (int i = 0; i < size; ++i) {
    for (int j = 0; j < size - 1; ++j) {
      if (arr[j][0] > arr[j + 1][0]) {
        int temp[2];
        temp[0] = arr[j][0];
        temp[1] = arr[j][1];
        arr[j][0] = arr[j + 1][0];
        arr[j][1] = arr[j + 1][1];
        arr[j + 1][0] = temp[0];
        arr[j + 1][1] = temp[1];
      }
    }
  }
}

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

  int size = sizeof(arr) / sizeof(arr[0]);
  bubbleSortByColumn(arr, size);

  for (int i = 0; i < size; ++i) {
    std::cout << arr[i][0] << " " << arr[i][1] << std::endl;
  }

  return 0;
}</code>
Copier après la connexion

Dans ce code, la fonction bubbleSortByColumn implémente un algorithme de tri à bulles simple qui parcourt le tableau et échange les lignes en fonction des valeurs de la première colonne. Le tableau 2D trié est ensuite imprimé.

Le choix de l'approche dépend des exigences spécifiques et des considérations de performances de votre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal