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