Rumah  >  Artikel  >  hujung hadapan web  >  Bolehkah Isihan JavaScript Tidak Stabil Menjadi Stabil?

Bolehkah Isihan JavaScript Tidak Stabil Menjadi Stabil?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-18 20:43:03535semak imbas

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>

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!

Kenyataan:
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