Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Kita Boleh Menggabungkan Dua Tatasusunan Rata Secara Cekap Bergantian?

Bagaimanakah Kita Boleh Menggabungkan Dua Tatasusunan Rata Secara Cekap Bergantian?

Barbara Streisand
Barbara Streisandasal
2024-12-19 16:47:16213semak imbas

How Can We Efficiently Merge Two Flat Arrays Alternately?

Menggabungkan Tatasusunan Rata Bergantian

Memandangkan dua tatasusunan rata yang sama saiz, kami berusaha untuk menggabungkannya secara bergilir-gilir, mengekalkan susunan unsur dalam setiap tatasusunan. Output yang diingini menyerupai:

array(0, 3, 1, 4, 2, 5);

Sementara pendekatan kekerasan seperti berikut menyelesaikan tugas:

for (var $i = 0; $i < count($a1); $i++) {
    newArray[] = $a1[$i];
    newArray[] = $b1[$i];
}

Kecekapan menjadi penting apabila melakukan operasi ini beribu-ribu kali.

Penyelesaian Asli

Penyelesaian asli yang dicadangkan melibatkan gelung tersuai yang berulang pada tatasusunan dan menambahkan elemennya secara bergilir-gilir pada tatasusunan baharu:

$count = count($a1);
for ($i = 0; $i < $count; $i++) {
    $newArray[] = $a1[$i];
    $newArray[] = $b1[$i];
}

Teknik ini terbukti lebih cekap, terutamanya apabila diulang berkali-kali, seperti yang ditunjukkan oleh ujian penanda aras di bawah:

$a1 = array(0,1,2);
$a2 = array(3,4,5);

$start = microtime(TRUE);

for($t = 0; $t < 100000; $t++)
{
    $newArray = array();
    $count = count($a1);
    for ($i = 0; $i < $count; $i++)
    {
        $newArray[] = $a1[$i];
        $newArray[] = $b1[$i];
    }
}
echo  round(microtime(TRUE) - $start, 2); # 0.6

$a1 = array(0,1,2);
$a2 = array(3,4,5);

$start = microtime(TRUE);

for($t = 0; $t < 100000; $t++)
{
    $newArray = array();
    for ($i = 0; $i < count($a1); $i++)
    {
        $newArray[] = $a1[$i];
        $newArray[] = $a2[$i];
    }
}
echo  round(microtime(TRUE) - $start, 2); # 0.85

Oleh itu, pra-pengiraan saiz tatasusunan memberikan lebih kurang 25% peningkatan prestasi, menjadikannya penyelesaian optimum untuk skala besar operasi.

Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Menggabungkan Dua Tatasusunan Rata Secara Cekap Bergantian?. 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