Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengisih Tatasusunan 2D dalam C Menggunakan qsort()?
Mengisih Tatasusunan 2D dalam C Menggunakan qsort()
Apabila berhadapan dengan tugas menyusun tatasusunan 2D, seseorang boleh mempertimbangkan untuk menggunakan binaan -in berfungsi untuk memudahkan proses. Dalam C , fungsi qsort() menonjol sebagai alat yang berkuasa untuk tujuan ini. Tidak seperti rakan sejawatannya, sort(), qsort cemerlang dalam mengendalikan pengisihan berbilang lajur untuk tatasusunan tetap.
Fungsi pembanding dalam qsort() mengambil pendekatan unik, menggunakan satu siri pernyataan ternary untuk membandingkan elemen dengan berkesan. Hasilnya ialah algoritma yang mengendalikan tatasusunan pengisihan berdasarkan nilai lajur tertentu dengan cekap.
Pertimbangkan contoh berikut, di mana tatasusunan 2D diisi dengan data rawak dan memerlukan pengisihan berdasarkan lajur pertamanya:
<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>
Dalam sampel ini, pembanding memastikan bahawa nilai lajur pertama dibandingkan dengan teliti untuk mencapai pengisihan yang diingini. Dengan memanfaatkan qsort() dan menyesuaikan komparator untuk memenuhi keperluan khusus anda, anda boleh mengisih tatasusunan 2D dalam C , menjadikan manipulasi data menjadi mudah.
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan 2D dalam C Menggunakan qsort()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!