【數組】—冒泡排序&&選擇排序(轉載自個人老師 Alley-巷子)

 什麼是冒泡排序:從頭至尾比較相鄰的兩個數的大小,若是符合條件則進行比較
  
  【注】:從小到大進行排序


  假設有一個數組 var arr = [9,8,7,6,5,4]; 咱們想要進行這個數組進行排序那麼按照冒泡排序的規則咱們能夠進行演變和嘗試

  第一次比較
  9 8 7 6 5 4
  
  8 9 7 6 5 4
  8 7 9 6 5 4
  8 7 6 9 5 4
  8 7 6 5 9 4
  8 7 6 5 4 9
  
  經過第一輪的比較咱們將最大的數字9比較了出來,可是這並非咱們想要的最終結果,因此咱們還須要繼續比較


  第二次比較
  8 7 6 5 4

  7 8 6 5 4
  7 6 8 5 4
  7 6 5 8 4
  7 6 5 4 8
  
  經過第二輪比較咱們將最大數字8比較了出來

  第三次比較
  7 6 5 4
  
  6 7 5 4
  6 5 7 4
  6 5 4 7
  
  經過比較咱們將最大數字7比較了出來

  第四次比較
  6 5 4

  5 6 4
  5 4 6
  
  經過比較咱們將最大數字6比較了出來

  第五次比較
  5 4
  
  4 5
  
  經過比較咱們將數組5比較了出來


  
  【注】:經過以上演變咱們得出一個結論也就是說比較的次數等於數組的長度減一; 每一次的比較內部須要兩兩比較的次數是 數組的長度-1-i
  
*/
var temp;
for(var i=0;i<arr.length-1;i++){
  for(var j=0;j<arr.length-1-i;j++){
    if(arr[j]>arr[j+1]){
       temp = arr[j];
       arr[j] = arr[j+1];
       arr[j+1] = temp; 
    }
  }
}
複製代碼

 

 

 

複製代碼
/*
  什麼是選擇排序
     相似於打擂臺同樣,誰贏了誰就站在第一位

   
  假設有一個數組 var arr = [9,8,7,6,5]; 咱們想要進行這個數組進行排序那麼按照選擇排序的規則咱們能夠進行演變和嘗試
  第一輪比較
  9 8 7 6 5
  
  8 9 7 6 5
  7 9 8 6 5
  6 9 8 7 5
  5 9 8 7 6

  第一輪比較出最小的數放在了第一位

  第二輪比較

  9 8 7 6

  8 9 7 6
  7 9 8 6
  6 9 8 7

  第二輪比較出最小的數放在了第一位

  第三輪比較
  9 8 7

  8 9 7
  7 9 8

  第三輪比較出最小的數放在了第一位

  第四輪比較
  9 8
  
  8 9

  第四輪比較完畢


  【總結】:首先看比較次數的規律:數組的長度-1,每輪比較的規律:每次比較的位置都是當前數字的位置+1進行的比較

*/
var temp;
for(var i=0;i<arr.length-1;i++){
  for(var j=i+1;j<arr.length;j++){
    if(arr[i]>arr[j]){
      temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }
  }
}
複製代碼
相關文章
相關標籤/搜索