我一直在谷歌上搜索,並且找不到類似的問題或解釋。氣泡排序算法中的外環
假定以下代碼:
int out, in;
for(out=nElems-1; out>1; out--)
for(in=0; in<out; in++) {
if(a[in] > a[in+1])
swap(in, in+1);
}
當外值達到1後爲什麼外循環停止?它不應該有2個元素嗎? 0和1的地方?是什麼讓我們確信他們已經被分類?
我明白這個算法是如何工作的,並且意識到如果沒有完成迭代就會停止一個標誌,這會有更好的解決方案,但是我對理解上面的代碼非常感興趣。
不應交換是'交換(一個[IN] ,a [in + 1])'?你擁有它的方式是交換索引,而不是實際排列數據 – nem035 2014-09-13 18:04:11
你試過對上面的代碼做空運行嗎? – zerocool 2014-09-13 18:05:35
從書中複製而來。虛擬交換會照顧到這一點。 :) – Lifter 2014-09-13 18:05:43