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
574 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!

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