首页  >  文章  >  后端开发  >  如何使用 qsort() 在 C 中对二维数组进行排序?

如何使用 qsort() 在 C 中对二维数组进行排序?

Susan Sarandon
Susan Sarandon原创
2024-11-05 06:53:02370浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn