冒泡排序、選擇排序、插入排序,三種排序方式的簡述


插入排序

概念:  插入排序,顧名思義,在一組序列當中插入一個數,前提是在要插入數字的序列本身順序是正確的,且插入數字后序列的順序仍然有序。

思考方式:  如果要將一個數字插入到某一個數列當中,會將此數字與數列當中的所有數字進行比較過后插入。如果此這個數列的順序是正確的,那么,只需用這個需要插入的數字按照順序插入即可。 在javascript中,即將該數字在數組中得下標改為在它位置后一位數字的下標。

 

 
         
1 var numArr = [1,5,9,7,8,0,3,5,7,6,4]; 
 
         

 

//定義一個無序數組
 2     for(i=0;i<numArr.length;i++){
 3         var sub = i;     
 4         var temp = numArr[sub]    //把下標和數組中下標對應的數字保存
 5         while(temp<numArr[sub-1]&&sub>0){//相鄰兩個數字進行比較
 6             numArr[sub] =numArr[sub-1];//互換位置
 7              sub--;       //下標減1
 8         }
 9               numArr[sub]= temp;   //如果兩個數字的序列調換之后,將兩個數字的位置進行調換。
10     }        
11     console.log(array)  //打印進行檢查

 

 

 

冒泡排序

  概念:通過一次次遍歷之后,最大的數字會慢慢浮到最上面,因此得名。

  思考方式:一組無序列表,通過遍歷整個數組按照順序兩兩對比后進行排序。遍歷一次之后,可以確定一個數字的准確位置,多次排序后進行整個數組的順序排列,在進行數組元素多的情況下,效率較低。

 

var numArr = [1,5,9,7,8,0,3,5,7,6,4]; //聲明一個數組
for(var i=0;i<numArr.length;i++){// 外圍循環代表從第幾個數開始比較
   for(var j=0;j<numArr.length-i-1;j++){//里面循環代表對比的次數
       if(numArr[J]<numArr[j+1]){//相鄰數字進行比較
       var temp = numArr[j];//  對比后交換相鄰數字的位置
       numArr[j] = numArr[j+1];
       numArr[j+1] = temp;  
      }  
  }  
}

 

 

 

選擇排序

  概念:從需要排序的數組中選出最小的(或者最大的)數字放在第一位,直到排序完成。

  思考方式:從需要排序的數組中選擇一個數字,與數組中的其他數字進行比較,如果有比它大得就是用比它大的那個數字繼續進行比較,遍歷一邊數組后得到一個最大或者最小值,放在第一位,依次選擇,直到排序完成。

 

 

      var numArr = [23,52,71,8,1111,64,9,0,2121,10,552,98,1];
        for(var i=0;i<numArr.length;i++){
        var min = i; //保存索引值
            for(var j=i+1;j<numArr.length;j++){
                if(numArr[min]>numArr[j]){//判斷是否是最小的
                    min =j   //最小的索引值賦給 min
                }
            }
            var temp = j     //找到最小的值后跟第i個換位置
          numArr[i] = numArr[min]
           numArr[min] = num[j]
       }

 

  

 


免責聲明!

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



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