氣泡排序
每次遍歷時,從前往後依次的比較相鄰兩個數的大小;如果前者比後者大,則交換它們的位置。這樣,一次遍歷之後,最大的元素就在數列的末尾! 採用相同的方法再次遍歷時,第二大的元素就被排列在最大元素之前。重複此操作,直到整個數列都有序為止
functionsortarr(arr,n)
'compare')//比較的次數 64
} }
}
氣泡排序的時間複雜度為o(n^2),即數列長度的平方次數
發生交換的次數根據不同數列的情況不同最終的次數也是不一樣的,但是比較的次數卻是固定的,這樣就顯得效率不高
高階版,新增乙個標記,在排序完成之後停止比較,以防止沒有意義的交換, 提高效率
functionbettersortarr(arr,n)
'compare')//比較的次數 40
//次數少了24次
}
if(!isflag)
}}
如果一趟遍歷中發生了交換,則標記為true,否則為false。如果某一趟沒有發生交換,說明排序已經完成!
let arr = [45,21,48,65,98,44,87,55,89,98]let length =arr.length
sortarr(arr,length)
bettersortarr(arr,length)
JS 氣泡排序
氣泡排序 相鄰的兩個元素比較,如果前乙個數大於後乙個數,交換位置。1 每一次排序將無序數列中的最大值找到 2 乙個含有n的序列最多經過n 1次排序即可有序 3 經過排序後,數列會分為兩部分,一部分有序,一部分無序 4 一旦出現前乙個數大於後乙個數,就交換位置。氣泡排序 1.外層迴圈 1 含有n個數的...
js氣泡排序
原理 依次比較相鄰的兩個值,如果後面的比前面的小,則將小的元素排到前面。依照這個規則進行多次並且遞減的迭代,直到順序正確。解釋設一組資料 var arr 25,55,89,12,45,36,23,16,50 兩個迴圈當i 0的時候,裡面的迴圈完整執行,從j 0執行到j 6,這也就是第一遍排序,結果是...
js氣泡排序
上 const arr 10,2,4,6,0,4,7,8 const len arr.length for let i 0 i len i console.log arr 0,2,4,4,6,7,8,10 外層for迴圈 迴圈陣列每乙個元素。裡層for迴圈 保證陣列每乙個元素與其他元素作比較。分析 ...