這裏是數組:冒泡排序 - 爲什麼附加循環
var ar = [1,2,7,3];
排序它必須有在上環3次迭代在內環3,2,1迭代。所以我寫了一個算法來做到這一點:
function sort() {
var i,j;
for (i=1; i < ar.length; i++) {
for (j=0; j < ar.length - i; j++) {
if (ar[j] > ar[j+1]) {
ar.swap(j, j+1);
}
}
}
}
然後我檢查了執行here:
function bubbleSort(items){
var len = items.length,
i, j, stop;
for (i=0; i < len; i++){
for (j=0, stop=len-i; j < stop; j++){
if (items[j] > items[j+1]){
items.swap(j, j+1);
}
}
}
return items;
}
現在,該算法在上環和4,3,2 4次迭代,在給定數組的內部循環中進行1次迭代。我不明白爲什麼,我錯過了什麼?
你假設,當然,在鏈接的算法是在任何方面的權威冒泡實現 –
是的,不是嗎?它是由尼古拉斯Zakas頁,誰是JS –
的大師,他可能是JS的大師 - 並不能讓他實現冒泡的大師......你的循環6次,他的循環14次,optimizied循環5次... 4個元素已經爲了你...循環6次,他的循環14次,優化的循環3次 –