0
A
回答
0
我們可以實現一個簡單的,非遞歸冒泡排序給出的疊層和一個臨時緩衝器:
- 迭代彈出從堆棧兩個元素,交換這兩個如果第一個元素更大,則將它們推回到緩衝區中。
- 重複步驟1,但反向的方向,所以從緩衝區中的所有元件將最終回到在棧上。
重複步驟1和2直到沒有更多的元素需要被交換。
function bubble(stack, buffer, up = true) {
let swaps = 0;
let last = stack.pop();
while (stack.length > 0) {
let next = stack.pop();
if (up ? last > next : last < next) swaps++;
else [next, last] = [last, next];
buffer.push(next);
}
buffer.push(last);
return swaps;
}
function sort(stack, up = true, buffer = []) {
do bubble(stack, buffer, !up);
while (bubble(buffer, stack, up) > 0);
return stack;
}
// Example:
console.log(sort([6,3,9,3,2,8])); // [2, 3, 3, 6, 8, 9]
對於一個遞歸解決方案,請參閱https://stackoverflow.com/a/41293937/1647737
相關問題
- 1. Java - 排序堆棧
- 2. 按升序排序堆棧?
- 3. 用盡ValueType堆棧空間
- 4. 堆棧空間不足
- 5. 堆棧空間異常
- 6. 增加堆棧空間
- 7. 排序堆棧的算法
- 8. 堆棧排序O(N)
- 9. 3堆整數之間的堆棧排序
- 10. 的堆棧空間 - 在公式中
- 11. 堆棧在c分配空間
- 12. 重新排序引導堆棧順序
- 13. 堆棧vs排隊?
- 14. 多線程程序在C:計算線程堆棧空間
- 15. 迭代快速排序與O(日誌n)額外的空間(堆棧)
- 16. 堆棧空間溢出與ST monad
- 17. Windows會回收堆棧空間嗎?
- 18. 堆棧空間不足錯誤
- 19. Excel VBA「堆棧空間不足」錯誤
- 20. 堆棧上分配多少空間
- 21. 堆棧視圖內的空間對象
- 22. Kendo Controls - SCRIPT28:堆棧空間不足
- 23. Bootstrap減少堆棧空間錯誤v3
- 24. IE8中堆棧空間的Javascript消息
- 25. Aurelia SystemJS堆棧空間不足
- 26. 堆vs棧vs彼爾姆空間
- 27. TCL:的堆棧空間(無限循環?)
- 28. 堆棧空間不足錯誤
- 29. 腳本堆棧空間耗盡firefox
- 30. 進程虛擬內存 - 堆棧和堆之間的空間
可以添加一個例子嗎? –
[排序堆使用JavaScript的元素]的可能的複製(https://stackoverflow.com/questions/41283590/sorting-elements-of-stack-using-javascript) – Hodrobond
可以在JS *排序堆疊就地*因爲該堆棧將作爲隨機存取陣列實施,無需額外的空間要求......您能澄清一下嗎?如果這是一個面試問題,你只能使用推送和流行,那當然是另一回事了。 –