首頁 > 後端開發 > C++ > 主體

如何使用 qsort() 在 C 中對二維陣列進行排序?

Susan Sarandon
發布: 2024-11-05 06:53:02
原創
368 人瀏覽過

How to Sort a 2D Array in C   Using qsort()?

使用qsort() 對C 中的二維數組進行排序

當面對對2D 數組進行排序的任務時,可以考慮使用內建的-in 函數可以簡化流程。在 C 中,qsort() 函數是實現此目的的強大工具。與它的對應項 sort() 不同,qsort 擅長處理固定數組的多列排序。

qsort() 中的比較器函數採用獨特的方法,利用一系列三元語句來有效地比較元素。結果是一種能夠根據特定列值熟練處理數組排序的演算法。

考慮以下範例,其中二維數組填充有隨機數據,並且需要根據其第一列進行排序:

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

int main() {
    int ar[10][2];

    // Populate array with random data
    std::random_device rd;
    std::default_random_engine rng(rd());
    std::uniform_int_distribution<> dist(1, 20);
    std::for_each(std::begin(ar), std::end(ar), [&](int(&ar)[2]) { ar[0] = dist(rng); ar[1] = dist(rng); });

    // Sort the array
    std::qsort(ar, 10, sizeof(*ar),
        [](const void *arg1, const void *arg2) -> int {
            int const *lhs = static_cast<int const *>(arg1);
            int const *rhs = static_cast<int const *>(arg2);
            return (lhs[0] < rhs[0]) ? -1
                : ((rhs[0] < lhs[0]) ? 1
                : (lhs[1] < rhs[1] ? -1
                : ((rhs[1] < lhs[1] ? 1 : 0))));
        });

    // Display sorted array
    std::for_each(std::begin(ar), std::end(ar), [](const int(&ar)[2]) { std::cout << ar[0] << ',' << ar[1] << '\n'; });

    return 0;
}</code>
登入後複製

在此範例中,比較器確保仔細比較第一列值以實現所需的排序。透過利用 qsort() 並自訂比較器以滿足您的特定需求,您可以在 C 中有效地對 2D 陣列進行排序,使資料操作變得輕而易舉。

以上是如何使用 qsort() 在 C 中對二維陣列進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!