冒泡排序的2種寫法
阿新 • • 發佈:2018-03-05
-s 個數字 後者 temp 排序。 var 理解 比較 col
假如有幾個數字 int score[] = {67, 69, 75, 88}; 按照從大到小排序。
有2種思路:
第一種思路:score[j] 和 score[j+1] 比較,如果前者比後者小,把前者和後者調換順序,兩兩調換後一輪下來,最小的會被排到最後去。
每一輪j都從0開始,當i輪排序,就有最後面的i個數字因為他是最小的,所以後面的每輪都不用理他了,也就是 score.length-1-i 往後的數不用管了,如上,第一輪有4個數字 i為0 ,那麽score.length-1-i 為3,也就是下標是3以後的可以不用管,3往後沒有數字,所以第一輪所有的數字都要參加比較,第二輪i=1,score.length-1-i 為2 也就是說 下標2後面的 下標為3的數字不用比了,因為兩兩比較厚,67會到 score[3],實現代碼如下:
var a = [2,3,4,5,9,8,6];
function sort(a){
var len = a.length - 1,
temp;
for(var i = 0; i < len; i++){
for(var j = 0; j < len - i; j++){
if(a[j] < a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
sort(a);
第二種思路:用 88 和 75 比較,再和69比較,再和 67 比較,發現88是最大的,把他排到第一位;然後 i=1,也就是第二輪,就不用看下標為 0 的 88 了,因為他是老大,然後接著比較。實現代碼如下:
var a = [1,2,3,4,5,6,9,8,6];
function sort(a){
for(var i=0,len1 = a.length - 1;i<len1;i++){
for(var j = a.length - 2;j>=i;j--){
if(a[j]<a[j+1]){
var temp = a[j];
a[j] = a[j+1];
a[j+1]=temp;
}
}
}
return a;
}
sort(a)
要理解j = a.length - 2 和 j >= i。
冒泡排序的2種寫法