2
我有一個關於這個算法中的問題:基數排序的代碼混淆
(幻燈片採取from here.)
int N = a.length;
int[] count = new int[R];
for (int i = 0; i < N; i++)
count[a[i]+1]++;
for (int k = 1; k < 256; k++)
count[k] += count[k-1];
for (int i = 0; i < N; i++)
temp[count[a[i]++]] = a[i]
for (int i = 0; i < N; i++)
a[i] = temp[i];
有人能闡述關於第三for循環,我們從移動記錄a []到temp []?
我知道,在我們積累計數後,他們應該是某種抵消。所以我們可以在temp []中的適當位置插入字母。
我只是不確定[i] ++在做什麼。(< -main question)我知道在count數組中引用這個字母的地方,但是爲什麼我們也要增加這個字母?我們換了信嗎?謝謝。
感謝您的幫助。
因爲當我們在第一個for循環中計數[a [i] +1] ++時,我們將type_i + 1的頻率正確地增加了嗎? 在幻燈片上它應該是a = 0,b = 2,c = 5 ...對嗎? – bunnybare
幻燈片顯示在step1之後'step3' –
後的系統狀態,它應該是:a = 0,b = 2,c = 3,... –