ホームページ > バックエンド開発 > C++ > C で列の値によって 2D 配列を並べ替えるにはどうすればよいですか?

C で列の値によって 2D 配列を並べ替えるにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-08 12:24:01
オリジナル
444 人が閲覧しました

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

C の組み込み関数またはカスタム メソッドを使用した列値による 2D 配列の並べ替え

C では、Java とは異なり、直接の組み込み関数はありません。特定の列値で 2D 配列を並べ替えることができます。ただし、この望ましい並べ替え動作を実現するには、さまざまなアプローチを使用できます。

C 標準ライブラリ関数の使用

1 つの方法では、汎用の並べ替えアルゴリズムである std::qsort 関数を利用します。カスタム コンパレータ関数を定義すると、列の値に基づいて並べ替えロジックを制御できます。実装例を次に示します。

<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>
ログイン後にコピー

このコードでは、compareArrayColumns 関数を使用して、配列の各行の最初の列の値を比較します。並べ替えは std::qsort 関数を使用して実行され、並べ替えられた 2D 配列が出力されます。

カスタム メソッドの使用

もう 1 つのアプローチには、目的のロジックを実装するカスタム並べ替え関数の作成が含まれます。バブル ソートを使用した実装例を次に示します。

<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>
ログイン後にコピー

このコードでは、 bubbleSortByColumn 関数は、配列を反復処理し、最初の列の値に基づいて行を交換する単純なバブル ソート アルゴリズムを実装します。ソートされた 2D 配列が出力されます。

アプローチの選択は、アプリケーションの特定の要件とパフォーマンスの考慮事項によって異なります。

以上がC で列の値によって 2D 配列を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート