我正在爲我的算法類做家庭作業問題,而且我對這個特定算法的工作原理感到驚歎。我已經在網上找到了答案,所以我不在尋找答案,只是一些幫助逐步完成代碼。根據我目前所瞭解的情況,該算法接受未指定長度的數組,並通過多次迭代,通過比較數組中單個元素與較小元素來對數字進行排序。在迭代結束時,它爲每個元素指定一個位置索引,該位置索引指定元素應按非遞減順序排列的順序。但是我無法弄清楚第一個循環完成後第二個待辦事項循環如何從迭代開始?任何幫助將不勝感激用於比較計數算法的僞代碼
問題:考慮對於排序由計數陣列,對於每個 其元素,更小的元件的數量的排序問題的算法,然後使用此信息來把 元件在它在排序數組中的適當位置。排序號碼,以下列表(60,35,81,98,14,47):
Algorithm ComparisonCountingSort(A[0..n − 1], S[0..n − 1])
//Sorts an array by comparison counting
//Input: Array A[0..n − 1] of orderable values
//Output: Array S[0..n − 1] of A’s elements sorted in nondecreasing order
for i ← 0 to n − 1 do
Count[i] ← 0
for i ← 0 to n − 2 do
for j ← i + 1 to n − 1 do
if A[i] < A[j]
Count[j] ← Count[j] + 1
else
Count[i] ← Count[i] + 1
for i ← 0 to n − 1 do
S[Count[i]] ← A[i]
return S
你能更好地格式化代碼嗎?如果縮進是合適的,則不需要括號,但目前我無法確定這些是嵌套的還是什麼。 – Compass 2014-09-19 21:02:32
@Compass,我希望有幫助,謝謝 – user2827137 2014-09-19 21:07:50
第一個循環在第一個循環完成後不會啓動,第二個循環的第一個實際上是嵌套**到第一個循環。 – Fallen 2014-09-19 21:12:43