Big-O untuk Fungsi PHP
Apabila bekerja dengan PHP, kecekapan pelbagai fungsi terbina dalam boleh berbeza dengan ketara. Artikel ini bertujuan untuk memberikan cerapan tentang masa-O besar teori (atau praktikal) mereka.
Pencarian
- array_key_exists: O(n), tetapi dekat dengan berkesan kepada O(1) disebabkan carian cincang.
- isset($array[$index]): O(n), juga hampir dengan O(1) kerana carian cincangan.
- in_array: O(n), lebih perlahan daripada carian berasaskan cincang.
- array_search: O(n), serupa dengan in_array.
Baris gilir Fungsi
- array_push: O(∑ var_i, untuk semua i)
- array_pop: O(1)
- array_shift: O(n), re -mengindeks kekunci.
- array_unshift: O(n ∑ var_i, untuk semua i), lebih perlahan kerana pengindeksan semula.
Persimpangan Tatasusunan, Kesatuan, Tolak
- kunci_bersilangan tatasusunan: O(Max( param_i_size)*∑param_i_count, untuk semua i) jika persimpangan adalah 100%.
- array_intersect: O(n^2*∑param_i_count, untuk semua i) jika persilangan ialah 100%.
- array_intersect_assoc: Sama seperti array_intersect_key.
- array_intersect_key O(π param_i_size, untuk semua i), produk semua saiz param.
- array_diff_key: O(∑ param_i_size, for i != 1).
Rawak
- kocok: O(n)
- array_rand: O(n)
Obvious Big-O
- array_fill: O(n)
- array_fill_keys: O(n)
- julat: O(n)
- array_splice: O(offset length)
- array_slice: O(offset length) atau O(n) jika panjang ialah NULL
- array_keys: O(n )
- nilai_tatasusunan: O(n)
- array_reverse: O(n)
Nota
- Semua pengiraan menganggap carian hash ialah O(1 ).
- Prestasi asimptotik mungkin berbeza bergantung pada butiran pelaksanaan khusus dan input data.
- Array adalah berasaskan sifar, jadi array_push menolak ke penghujung tatasusunan.
Atas ialah kandungan terperinci Apakah Kerumitan Masa Besar-O bagi Fungsi Tatasusunan PHP Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!