js實現冒泡排序


冒泡排序

冒泡排序(Bubble Sort),是一種 計算機科學領域的較簡單的 排序算法
它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。
這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端,故名。
原理:
  1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。
  3. 針對所有的元素重復以上的步驟,除了最后一個。
  4. 持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較
js實現:
 1 var flag = false;
 2 var x = 0;//計算轉換的次數
 3 var arr = [35,88,16,27,32,4,90,56,79];
 4    for(var j = 0;j<arr.length-1;j++){
 5 //大的排序次數(arr.length-1)  
 6 // 為什么要arr.length-1。假如是9個數,第一趟就把最大的數固定了,第二趟就把第二大的數固定了,
 7 //每排一趟就固定了一個大數,第八趟就固定了第 八大的數,9個數8個位置都已經定下來了,那么剩下的數就是最小的數(第九大的數),
 8 //所以就不用再排了,9個數,只需要排8趟,n個數,只需n-1趟 
 9     for(var i = 0;i<arr.length-1;i++){
10 //小的排序,不停兩兩交換,
11 //為什么要減i,因為每定義一個大數,后面的兩兩交換循環就減少一次。
12 //假設為9個數,如第一趟,i=0,兩兩循環的次數為arr.length-1,8次;第二趟,i=1,
13 //兩兩交換循環的次數就為arr.length-1,7次,因為已經把最大的數固定了,就相當於剩下的8個數參與排序,7次兩兩交換。  
14 
15     if(arr[i]>arr[i+1]){//相鄰連個數進行比較,如果第一個數大於第二個數則互換位置。
16     t = arr[i + 1];
17    arr[i+1] = arr[i];
18    arr[i] = t;
19    flag = true;
20     }
21            }
22    if(flag){
23      x++;
24    flag = false;//如果為true則表示交換了位置,如果為false則表示順序是對的,不需要排序了,可以減少循環的次數
25         }
26   else{
27    break;
28   }
29    }
30 alert(x);//五次
31 document.write(arr  + "<br/>");

 

 
 


免責聲明!

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



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