//計數排序 計算每一個數值出現多少次,并按入桶出桶原理(先入先出)原則重新排序。
a <- {
'0':0,
'1':2,
'2':1,
'3':56,
'4':3,
'5':67,
'6':3,
'length':7, //這里的數組里面的length并不是里面有多少個數據,而是指數組里面最大序列的編號+1,因為數組是從0開始的?。?!
}
hash <- {} //我們需要新生成一個hash, 數組也是hash,因為都是一個key對應一個值。
while index <- 0
while index < a['length'] //while是循環語句,是指當滿足這一條件的時候,該區域代碼將重復執行,知道不滿足條件為止。這里是說如果我們的index < a['length'] 例如我們這里 index6(a0~a6) < 7(a['length'])
number <- a[index]
if hash[number] < == undefined // 檢測 hash[number]數值在hash中是否存在, 比如a[index1]對應的數值是2,所以我們檢測 hash[2] 是否存在,如果沒有的話 執行...
hash[number] = 1
else
hash[number] = hash[number] + 1
end
index2 <- 0 // index2 是hash左邊的序列號的統稱,也就是容器的編號,也是從0號開始的
max <- findMax(a) //找出a數組的最大值比如我們例子中最大值是67,雖然最大值是67,所以67在hash中的序號是67,但是在hash中,length并不是67,因為hash也是從0開始的數組。
newArr <- {}
while index2 < max + 1 //while是循環語句,是指當滿足這一條件的時候,該區域代碼將重復執行,知道不滿足條件為止。 例如這里最大值雖然最大值是67,所以67在hash中的序號是67,但是在hash中,length并不是67,因為hash也是從0開始的數組。所以是 最大值 + 1 count <- hash[index2] //將hash[index2]也就是hash序列右邊的數值賦予一個到 count的變量中
count = hash[index2] //將hash數組中,序號對應的右邊的值賦值給count這個變量,有可能存在這個變量也就是hash[index2] 無值的情況。所以下面那句給了個條件,也就是a數組里面的每一個數值都在hash中的序列中。例如a數組中并沒有5這個值,那么在hash[index5]對應的count就是不存在的。
if count != undefined // 條件語句,undefined (adj. 未闡明的; 未限定的); 如果 count 不是 未定義的,則執行下列語句。其實該句是由 if count = undefined的反推,如果count不等于undefined,我們將會做這些事情。
countIndex <- 0 // 在滿足上面的if條件語句下,count最少是1,也就是桶里面產生了一個數據處于桶的最下方,所以我們先給他定義countIndex[0],也有可能桶里面存在多個數值,那么就會有countIdext[0,1,2,3,4,5,6]多個值的情況,0排在最底層,依次往上。
while countIndex < count // 循環語句,該循環是進入桶里面循環的句子,當count的序號值小于 count數量的時候
newArr.push(index2) //給新的數組推一個hash[index2]對應的數值
countIndex <- countIndex + 1 //然后桶里面數值對應的序號也就是countIdex 遞增+1
end
end
index2 <- index2 + 1 //進入下一個桶里面
end
print newArr //打印newArr數組里面的數值
計數排序的偽代碼
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...