數組的排序方法


1.冒泡排序法

  <script>
    var arr = [3, 5, 1, 8, 2, 9, 4];
    //i控制的是循環多少趟
    for (var i = 0; i < arr.length - 1; i++) {
      //假設當前的數據是已經排好序的
      var flag = true;
      //j控制的是每一次的比較,j和j+1比較,說明,j取到arr.length-1就可以了
      //外循環i每執行一次,就會有i個值排好序,所以每一次比較的次數就為arr.length-1-i
      for (var j = 0; j < arr.length -1 - i; j++) {
        //如果前一項比后一項大,兩兩交換位置
        if (arr[j] > arr[j + 1]) {
          var temp = arr[j + 1];
          arr[j + 1] = arr[j];
          arr[j] = temp;

          //如果發生交換位置,說明沒有排好序
          flag = false;
        }
      }
      //每一次比完看flag的值,如果是true,說明已經排好序,結束循環
      if(flag){
        break;
      }
    }
    console.log(arr);
  </script>

2.插入排序法

  <script>
    var arr = [3, 5, 1, 8, 2, 9, 4];
    //插入排序法
    for (var i = 1; i < arr.length; i++) {
      //從第二個數開始
      var temp = arr[i];
      //j表示從temp的前一個數開始,依次減減去比較
      for (var j = i-1; j >= 0; j--) {
        //如果當前值比它的前一項小
        if(temp < arr[j]){
          //將前一項的位置往后移動一位
          arr[j+1] = arr[j];
        }
        else{
          //如果不滿足,結束循環
          break;
        }
      }
      //當內部循環結束的時候,給temp插到對應的值
      arr[j+1] = temp;
    }
    console.log(arr);

 


免責聲明!

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



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