Bagaimana Mengira Set Perbezaan dengan Cekap dalam Tatasusunan Javascript?

Patricia Arquette
Lepaskan: 2024-10-21 11:22:29
asal
827 orang telah melayarinya

How to Compute Set Difference Efficiently in Javascript Arrays?

Pengiraan Perbezaan Set yang Cekap dengan Tatasusunan Javascript

Mengira perbezaan set antara dua tatasusunan boleh menjadi operasi penting dalam manipulasi data dan teori set. Dalam Javascript, di mana tatasusunan berfungsi sebagai struktur data utama, mencari cara yang cekap dan elegan untuk melaksanakan tugas ini adalah penting.

Satu pendekatan mudah ialah memanfaatkan fungsi tatasusunan asli.penapis(), seperti yang ditunjukkan di bawah:

<code class="js">var A = [1, 2, 3, 4];
var B = [1, 3, 4, 7];

var diff = A.filter(function(x) {
  return B.indexOf(x) < 0;
});</code>
Salin selepas log masuk

Pendekatan ini menggunakan fungsi indexOf() untuk menentukan sama ada elemen daripada A wujud dalam B. Jika tidak, elemen itu ditambahkan pada tatasusunan perbezaan yang terhasil. Walaupun mudah, ia mempunyai kelemahan untuk melakukan carian linear dalam tatasusunan B untuk setiap elemen A, yang berpotensi menghasilkan kerumitan masa O(n^2).

Untuk tatasusunan yang lebih besar, prestasi boleh dipertingkatkan dengan menggunakan algoritma berikut:

  1. Buat set S yang mengandungi semua elemen daripada B.
  2. Lelaran melalui A dan tambahkan mana-mana elemen yang tidak ditemui dalam S kepada perbezaan tatasusunan perbezaan.
<code class="js">var s = new Set(B);
var diff = A.filter(function(x) {
  return !s.has(x);
});</code>
Salin selepas log masuk

Menggunakan set untuk S memastikan ujian keahlian dilakukan dalam masa yang tetap, menghasilkan kerumitan masa keseluruhan O(n).

Atas ialah kandungan terperinci Bagaimana Mengira Set Perbezaan dengan Cekap dalam Tatasusunan Javascript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber: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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!