Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengisih Tatasusunan oleh Elemen Pertama dalam C?
Bagaimanakah Mengisih Tatasusunan mengikut Elemen Pertama?
Anda mempunyai tatasusunan, seperti [[4, 204] ], [10, 39], [1, 500]]. Anda ingin mengisihnya mengikut elemen pertama subarray untuk mendapatkan [[1, 500], [4, 204], [10, 39]]. Begini cara untuk melakukannya dalam C :
Pendekatan: Isih Indeks Daripada Tatasusunan
Daripada mengisih tatasusunan itu sendiri, anda boleh mengisih tatasusunan indeks yang menghala ke tatasusunan asal. Pendekatan ini lebih cekap untuk tatasusunan besar di mana setiap subarray mengandungi sejumlah besar data atau apabila susunan asal perlu dikekalkan.
Langkah 1: Buat Tatasusunan Indeks
Memulakan tatasusunan indeks bernama indeks, dengan julat indeks dari 0 hingga n-1, dengan n ialah bilangan subarrays.
Langkah 2: Tentukan Predikat Isih
Buat predikat isihan yang membandingkan elemen pertama subarrays menggunakan tatasusunan indeks. Predikat harus kembali benar jika elemen pertama subarray pada indeks n1 adalah kurang daripada itu pada indeks n2.
bool compareFirstElement(int n1, int n2) { return timeTable[n1][0] < timeTable[n2][0]; }
Langkah 3: Susun Susunan Indeks
Isih tatasusunan indeks menggunakan fungsi std::sort dan predikat yang ditentukan. Ini akan menyusun semula indeks supaya berada dalam tertib menaik berdasarkan elemen pertama subarray.
std::sort(index, index + 3, compareFirstElement);
Langkah 4: Gunakan Indeks Isih untuk Mengakses Data
Untuk akses data yang diisih, gunakan tatasusunan indeks yang diisih untuk menunjuk ke subarray dalam Jadual waktu tatasusunan.
for (int i = 0; i < 3; ++i) { std::cout << "The index is " << index[i] << ". The data at this index is [" << timeTable[index[i]][0] << " " << timeTable[index[i]][1] << "]\n"; }
Contoh Langsung:
[Contoh Langsung](https://wandbox.org/permlink/sXTyuT2fubLi4j7i)
Nota: Pendekatan ini juga boleh digunakan untuk mengisih tatasusunan objek atau struct yang mengandungi boleh disusun data.
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan oleh Elemen Pertama dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!