Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengisih Tatasusunan oleh Elemen Pertama dalam C?

Bagaimana untuk Mengisih Tatasusunan oleh Elemen Pertama dalam C?

Barbara Streisand
Barbara Streisandasal
2024-11-21 19:05:131002semak imbas

How to Sort an Array of Arrays by the First Element in 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!

Kenyataan:
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