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