冒泡排序的2種寫法


  假如有幾個數字 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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM