Rumah > pembangunan bahagian belakang > tutorial php > Apakah Kerumitan Masa Fungsi Tatasusunan Terbina Dalam PHP Biasa?

Apakah Kerumitan Masa Fungsi Tatasusunan Terbina Dalam PHP Biasa?

Barbara Streisand
Lepaskan: 2024-12-09 12:30:15
asal
476 orang telah melayarinya

What are the Time Complexities of Common PHP Built-in Array Functions?

Memahami Kerumitan Masa Fungsi Terbina Dalam PHP

Pelbagai fungsi terbina dalam PHP mempamerkan kerumitan masa yang berbeza apabila mengendalikan struktur data. Artikel ini menyediakan senarai komprehensif masa Big-O teori dan praktikal untuk fungsi ini, membolehkan pembangun mengoptimumkan prestasi kod mereka.

Mata Menarik

  • isset/array_key_exists: Jauh lebih pantas daripada in_array dan array_search untuk operasi carian.
  • (Kesatuan): Lebih pantas sedikit daripada array_merge, menawarkan sintaks yang lebih ringkas untuk menggabungkan tatasusunan.
  • kocok: Mempunyai kerumitan Big-O yang sama seperti array_rand, menjadikan kedua-dua fungsi sesuai untuk rawak data.
  • array_pop/array_push : Lebih cepat daripada array_shift/array_unshift kerana penalti yang ditanggung semasa pengindeksan semula.

Pencarian

  • array_key_exists: Berkesan O(1), kerana carian cincang hampir kepada serta-merta, walaupun O(teorinya) n) kerumitan.
  • isset( $array[$index] ): Sama seperti array_key_exists, menunjukkan kerumitan masa yang hampir malar.
  • in_array: O(n), kerana ia melakukan carian linear melalui tatasusunan.
  • array_search: O(n), menggunakan fungsi teras yang sama seperti in_array tetapi mengembalikan nilai.

Fungsi Gilir

  • array_push: O(∑ var_i, untuk semua i), dengan var_i mewakili nilai tambahan yang diluluskan sebagai argumen .
  • array_pop: O(1).
  • array_shift: O(n), disebabkan pengindeksan semula diperlukan.
  • array_unshift: O(n ∑ var_i, untuk semua i), sekali lagi terhasil daripada yang diperlukan pengindeksan semula.

Persimpangan Tatasusunan, Kesatuan, Tolak

  • kunci_bersilangan_tatasusunan: Jika persilangan ialah 100%, O(Max(param_i_size) * ∑ param_i_count, untuk semua i); jika persilangan ialah 0%, O(∑param_i_saiz, untuk semua i).
  • array_intersect: Jika persilangan ialah 100%, O(n^2 * ∑param_i_count, untuk semua i); jika persilangan ialah 0%, O(n^2).
  • array_intersect_assoc: Serupa dengan array_intersect_key, mempamerkan kerumitan masa Big-O yang sama.
  • array_diff : O(π param_i_size, untuk semua i), mewakili hasil darab saiz parameter.
  • array_diff_key: O(∑ param_i_size, for i != 1), kerana ia mengecualikan lelaran ke atas tatasusunan pertama.
  • array_merge: O(∑ array_i, i != 1), tidak memerlukan lelaran ke atas tatasusunan pertama.
  • (Kesatuan): O(n), dengan n ialah saiz tatasusunan kedua, menanggung overhed yang lebih rendah daripada array_merge.
  • array_replace: O(∑ array_i, untuk semua i).

Rawak

  • kocok: O(n).
  • array_rand: O (n), melibatkan carian linear.

Jelas 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) if panjang = NULL.
  • kunci_tatasusunan: O(n).
  • nilai_array: O(n).
  • array_reverse: O(n).
  • array_pad: O(saiz_pad).
  • array_flip: O(n).
  • array_sum: O(n).
  • array_product: O(n).
  • array_reduce: O(n).
  • array_filter: O(n).
  • peta_tatasusunan: O(n).
  • array_chunk: O(n).
  • array_combine: O(n).

Atas ialah kandungan terperinci Apakah Kerumitan Masa Fungsi Tatasusunan Terbina Dalam PHP Biasa?. 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