Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengisih Tatasusunan Berbilang Dimensi mengikut Elemen Pertama Setiap Subarray dalam C ?

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

Barbara Streisand
Barbara Streisandasal
2024-11-25 21:58:15954semak imbas

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;
    }
}

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]

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!

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