Bolehkah Isihan JavaScript Tidak Stabil Menjadi Stabil?

Mary-Kate Olsen
Lepaskan: 2024-10-18 20:43:03
asal
423 orang telah melayarinya

Can a Non-Stable JavaScript Sort Become Stable?

Isih Stabil dalam JavaScript dengan Twist

Mengisih koleksi objek ialah tugas biasa dalam pengaturcaraan, selalunya memerlukan kestabilan untuk mengekalkan yang asal susunan unsur yang sama. Walau bagaimanapun, kestabilan mungkin tidak wujud dalam algoritma pengisihan yang digunakan.

Memperkenalkan Isihan Tidak Stabil yang Stabil

Pendekatan yang memeranjatkan namun berkesan melibatkan mengubah isihan tidak stabil berfungsi menjadi stabil. Sebelum menyusun, kedudukan semua elemen diperolehi. Keadaan isihan diubah suai untuk mempertimbangkan kedua-dua kunci utama dan kedudukan asal elemen sebagai kunci sekunder.

Dengan menggunakan kedudukan sebagai pemecah seri sebagai perbandingan, kestabilan hasil isihan akhir dapat dipastikan.

Pelaksanaan dalam JavaScript

Coretan di bawah menyediakan contoh pelaksanaan dalam JavaScript:

<code class="javascript">function stableSort(array, key) {
  const positions = [];

  for (let i = 0; i < array.length; i++) {
    positions[i] = i;
  }

  array.sort((a, b) => {
    const keyComparison = a[key].localeCompare(b[key]);
    return keyComparison || positions[a] - positions[b];
  });
}</code>
Salin selepas log masuk

Dalam kod ini, fungsi stableSort mengisih tatasusunan mengikut yang ditentukan kunci dengan cara yang stabil. Tatasusunan kedudukan menangkap kedudukan awal elemen. Keadaan isihan bergantung pada localeCompare untuk perbandingan rentetan dan kembali kepada perbandingan kedudukan sebagai pemecah seri.

Pendekatan ini menawarkan fleksibiliti untuk memanfaatkan sebarang algoritma pengisihan yang tidak stabil sambil mengekalkan kestabilan untuk elemen yang sama.

Atas ialah kandungan terperinci Bolehkah Isihan JavaScript Tidak Stabil Menjadi Stabil?. 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!