Q
重複選擇排序行爲
1
A
回答
0
儘管您在3
中交換的具體問題很容易回答,但更通用的版本並不容易,因爲選擇類別不是穩定。
經典實施將挑3
第三索引處,因爲下一個元件拾取到交換條件是
if (a[i] < a[iMin])
一旦第一3
被交換到位置0,第二個3
在索引5不會被選中。
該條件意味着最早的重複將根據算法當前通過之前的排列來選擇。不過,這種安排可能與元素的初始安排不一樣。
只要進一步向下複製選擇過程,就不能保證,因爲較小的數字可以在它們之前交換。
例如,在此初始排列
[3, 3, 1]
的3
索引零將被最後拾取,因爲在第一次迭代將其移動一路到數組的末尾。
0
它取決於實施。 但是,通常情況下,循環將開始從左到右掃描並將獲得第一個3
。
但我怎麼說thare不是一個標準。
這是根據本Wikipedia一個可能的實現:
procedure SelectionSort(a: list to sorts);
for i = 1 to n - 1
posmin ← i
for j = (i + 1) to n
if a[j] < a[posmin]
posmin ← j
tmp ← a[i]
a[i] ← a[posmin]
a[posmin] ← tmp
相關問題
- 1. 簡單選擇重複元素排序?
- 2. 選擇排序的重複問題
- 3. 選擇重複行
- 4. 選擇重複行
- 5. 在MySQL中選擇最重複的值並進行排序
- 6. 按條件選擇行幷包括重複項排序
- 7. 根據重複次數選擇行,按字母順序排列
- 8. 爲重複的ID號碼排序行
- 9. Xcode 4中的「爲選擇排序行」
- 10. 選擇不重複的行
- 11. R選擇重複的行
- 12. 選擇不進行重複
- 13. JTable排序 - 選擇一行
- 14. 重複選擇
- 15. 選擇重複
- 16. 如何優化重複的MySQL排序選擇
- 17. 選擇排序不會捕獲重複的數字
- 18. 從重複的行中選擇一行
- 19. 在重複行之間進行選擇
- 20. 行排序後在JTable中選擇行
- 21. 重寫排序行爲
- 22. 重複和排序
- 23. 重複jQuery選擇
- 24. 只選擇重複
- 25. ListView重複選擇
- 26. Python選擇排序
- 27. 選擇排序 - arrayLists
- 28. 選擇排序C++?
- 29. Java選擇排序
- 30. 選擇排序Java