目標:基於鍵對物件陣列進行高效排序,保持一致性和穩定性。
演算法建議: 雖然有許多排序演算法,但為了滿足您對穩定性的特定需求,請考慮實作不穩定排序演算法的修改版本,例如 QuickSort 或 MergeSort。
穩定排序技術:
為了確保穩定性,在排序比較功能中增加一個額外的標準。具體來說,當比較兩個相等的元素時,請使用它們在輸入數組中的原始位置作為決勝局。這將保持具有相同鍵的元素的順序。
JavaScript實作:
const stableSort = (arr, key, order) => {
// Get initial positions of elements
const positions = arr.map((el, i) => i);
// Sort using modified comparison function
arr.sort((a, b) => {
const keyA = a[key];
const keyB = b[key];
if (keyA === keyB) {
// Fall back to position for stability
return positions[a] - positions[b];
}
return order === "asc" ? keyA - keyB : keyB - keyA;
});
return arr;
};
用法範例:
const arr = [
{ id: 1, value: 4 },
{ id: 2, value: 2 },
{ id: 3, value: 4 },
{ id: 4, value: 3 },
];
const sortedArr = stableSort(arr, "value", "asc");
// Output:
// [
// { id: 2, value: 2 },
// { id: 1, value: 4 },
// { id: 3, value: 4 },
// { id: 4, value: 3 },
// ]
透過使用該技術,即使在不穩定的排序演算法中也能獲得穩定的排序,適合您200-300個左右物件的場景。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3