Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengisih Tatasusunan 2D dalam C Menggunakan qsort()?

Bagaimana untuk Mengisih Tatasusunan 2D dalam C Menggunakan qsort()?

Susan Sarandon
Lepaskan: 2024-11-05 06:53:02
asal
440 orang telah melayarinya

How to Sort a 2D Array in C   Using 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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan