溫故之 「插入排序」

概念:將一個數據插入已經排好序的有序數組中,從而獲得一個新的多一個數據的有序數組。

概念理解~~數組

將要排序的是一個亂的數組int[] arrays = {3, 2, 1, 3, 3};
在未知道數組元素的狀況下,咱們只能把數組的第一個元素做爲已經排好序的有序數據,也就是說,把{3}當作是已經排好序的有序數據code

  • 第一趟排序:
    用數組的第二個數與第一個數(當作是已有序的數組)比較
  1. 若是比第一個數大就不用管
  2. 若是比第一個數小,將第一個數日後退一步,將第二個數插入第一個數去
  • 第二趟排序:
    用數組的第三個數與已經是有序的數組{2,3}(剛纔在第一趟排出來的結果)比較
  1. 若是比第二個數字大就不用管
  2. 若是比第二個數字小,就跟第一個數比較,若是比第一個數大,那麼將第三個數字插入第二個位置,若是比第一個數字小,那麼第一位數將後退一步,將第三個數插入第一位
  • 以此類推排序完整個數組排序

    轉換成代碼前的簡單理解
    1 假定第一個元素是最小值,
    2 從第二個元素開始,往該元素前面的序列比較,
    3 若是後一個元素比前一個元素小,則交換位置io

function insersort (arr) {
        for(var i=1;i<arr.length-1; i++) { // 從第二個數開始取
            for(var j=i; j>0; j--) {  // 依次和前面的數作比較
                if(arr[j]<arr[j-1]) {
                    var k = arr[j];
                    arr[j] =arr[j-1];
                    arr[j-1] = k;
                }
            }
        }
        return arr;
    }
相關文章
相關標籤/搜索