Bagaimana Mengisih Tatasusunan Berbilang Dimensi mengikut Elemen Pertama Setiap Subarray dalam C ?

Barbara Streisand
Lepaskan: 2024-11-25 21:58:15
asal
918 orang telah melayarinya

How to Sort a Multi-Dimensional Array by the First Element of Each Subarray in C  ?

Mengisih Tatasusunan Berbilang Dimensi mengikut Subarray Elemen Pertama dalam C

Untuk mengisih tatasusunan berbilang dimensi mengikut elemen pertama setiap subarray, adalah disyorkan untuk menggunakan pendekatan pengisihan tidak langsung dan bukannya memanipulasi tatasusunan secara langsung. Ini melibatkan mencipta tatasusunan indeks yang menghala ke tatasusunan asal dan mengisih indeks berdasarkan kriteria yang dikehendaki.

Pelaksanaan

Berikut ialah contoh pelaksanaan dalam C :

#include <algorithm>

int main() {
    // Sample array of arrays
    int timeTable[3][2] = {{4, 204}, {10, 39}, {1, 500}};

    // Create an array of indices to use for sorting
    int indices[3] = {0, 1, 2};

    // Sort indices based on the first element of each subarray in timeTable
    std::sort(indices, indices + 3, [](int i1, int i2) { 
        return timeTable[i1][0] < timeTable[i2][0]; 
    });

    // Access the sorted subarrays using the sorted index array
    for (int i = 0; i < 3; ++i) {
        std::cout << "Subarray at index " << indices[i] 
                  << ": [" << timeTable[indices[i]][0] << ", " 
                  << timeTable[indices[i]][1] << "]" << std::endl;
    }
}
Salin selepas log masuk

Contoh

Untuk tatasusunan sampel Jadual waktu, outputnya ialah:

Subarray at index 0: [1, 500]
Subarray at index 1: [4, 204]
Subarray at index 2: [10, 39]
Salin selepas log masuk

Faedah Pengisihan Tidak Langsung

Kaedah pengisihan tidak langsung ini menawarkan beberapa kelebihan berbanding pengisihan langsung:

  • Kecekapan Memori: Ia tidak memerlukan ruang storan tambahan untuk salinan sementara yang asal tatasusunan.
  • Prestasi: Indeks pengisihan biasanya lebih pantas daripada memanipulasi tatasusunan asal secara langsung.
  • Fleksibiliti: Lebih mudah untuk menukar kriteria pengisihan , kerana ia hanya melibatkan pengubahsuaian predikat pengisihan dalam std::sort panggil.
  • Kebolehselenggaraan: Kod ini lebih mudah dibaca dan diselenggara, kerana ia mengelakkan operasi yang rumit pada tatasusunan berbilang dimensi.

Atas ialah kandungan terperinci Bagaimana Mengisih Tatasusunan Berbilang Dimensi mengikut Elemen Pertama Setiap Subarray dalam C ?. 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