透過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中文網其他相關文章!