首頁 >web前端 >js教程 >不穩定的 JavaScript 排序可以變得穩定嗎?

不穩定的 JavaScript 排序可以變得穩定嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-18 20:43:03566瀏覽

Can a Non-Stable JavaScript Sort Become Stable?

透過Twist 在JavaScript 中實現穩定排序

對物件集合進行排序是程式設計中常見的任務,通常需要穩定性來保留原始內容相等元素的順序。然而,所採用的排序演算法可能並不是固有的穩定性。

引入穩定的非穩定排序

一種令人驚訝但有效的方法涉及轉換非穩定排序功能變為穩定功能。在排序之前,先取得所有元素的位置。修改排序條件,將主鍵和元素原始位置作為輔助鍵。

以位置作為平局進行比較,確保最終排序結果的穩定性。

JavaScript 中的實作

下面的程式碼片段提供了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>

在此程式碼中,stableSort 函數依指定的順序對陣列進行排序金鑰以穩定的方式。 Positions 陣列捕捉元素的初始位置。排序條件依賴 localeCompare 進行字串比較,並回退到位置比較作為決勝局。

這種方法提供了利用任何不穩定排序演算法的彈性,同時保持相等元素的穩定性。

以上是不穩定的 JavaScript 排序可以變得穩定嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn