回答
使用額外的內存來存儲陣列的原始順序。然後在比較兩個相等元素時,在算法中使用該順序。
下面是如何使一個例子Python的list.sort
穩定:
def make_stable(algorithm):
def stable_version(A):
#adding original order of the array
A2 = [(y, x) for x, y in enumerate(A)]
#running algorithm in modified array
algorithm(A2)
#replacing original array with the result only
A[:] = [y for y, x in A2]
return stable_version
A = [3, 2, 1, 2]
stable_sort = make_stable(list.sort)
stable_sort(A)
print A
我覺得這裏有點不對勁! 我試圖更好地描述它@Rex。請閱讀它 – mama23n
這是一個正確的答案。基本上,你做2元組和排序,如果元組的第一個元素相等,然後比較第二個元組。畢竟你只是扔掉第二個元素。 –
Python的排序正確地對元組進行排序。這也是一個穩定的排序,這是不同的。如果你想正確地對元組進行排序,你可以先對輔助鍵進行排序,然後對主鍵進行穩定排序。如果不是更早的話,這一切都是在20世紀60年代制定的。 –
有穩定的排序算法和不穩定的排序算法。 你應該選擇一個穩定的算法。 Java中的Arrays.sort必須穩定。
我想我們可以在數目相同的情況下進行一些更改。一些變化就像在相同的數字上添加一個非常小的數字 – mama23n
- 1. 如何將以下非穩定排序算法轉換爲穩定?
- 2. R:將非平穩轉換爲固定
- 3. 排序算法穩定或不穩定的原因是什麼?
- 4. 快速排序算法穩定性
- 5. 排序和穩定
- 6. 選擇排序。如何做選擇排序作爲穩定的算法?
- 7. NSArray使用的排序算法是否穩定排序?
- 8. JavaScript穩定排序問題
- 9. 穩定拓撲排序
- 10. 選擇排序 - 穩定
- 11. scala排序穩定嗎?
- 12. 使C#ParallelEnumerable.OrderBy穩定排序
- 13. 如何進行穩定排序?
- 14. opencv視頻穩定算法
- 15. C++算法的穩定性
- 16. 如何使這種算法穩定
- 17. 對面的Java中的穩定排序(不穩定?)
- 18. 無法與穩定性穩定
- 19. 爲什麼選擇排序不穩定?
- 20. 如何將char *穩定轉換爲TAO :: String_Manager_T <char>
- 21. 爲什麼這個算法穩定,我怎麼能使它不穩定?
- 22. 如何使用穩定排序對DataGrid進行排序?
- 23. 我的CSS定位不穩定。我該如何穩定它?
- 24. 不穩定計算誤差
- 25. 穩定排序與多個條件
- 26. 計數排序的穩定性
- 27. 合併排序的穩定性
- 28. 找不到包/ laravel/laravel穩定穩定
- 29. symfony 2.0有多穩定或不穩定?
- 30. 對基數排序只使用穩定的排序算法有什麼需要?
有在維基百科條目進行排序排序算法一張大桌子。它表明哪些是穩定的,哪些不穩定。在你使用stackoverflow之前,你有沒有想過做一些家庭作業? –
假設你使用的是什麼,通常會是一個非穩定的排序,其中一個方案是產生一組索引0到n-1的陣列,或陣列一組指針。根據數組對索引或指針進行排序,如果相等,則比較索引或指針以保留原始順序。 – rcgldr
不僅我不在尋找作業解決方案,而是在作業中提出一些問題。我想要一些算法,而不是任何類型的代碼。 @RexD – mama23n