插入排序

·  阅读 59
插入排序

插入排序的原理

每次取一个列表元素与列表中已经排序好的列表段进行比较,然后插入从而得到新的排序好的列表段,最终获得排序好的列表。

代码实现

初始版本实现

function insertSortFun(orgArr){
    let tempArr = orgArr.slice();
    for(let j = 1; j < tempArr.length; j++){
        for(let i = j; i > 0; i--){
            if(tempArr[i] < tempArr[i - 1]){
                changeFun(tempArr, i, i - 1);
            }
        }
    }
}

// 交换函数
function changeFun(arr, i, j) {
  let temp = arr[i];
  arr[i] = arr[j];
  arr[j] = temp;
}
复制代码

优化版本

function insertSortFun(orgArr){
    let tempArr = orgArr.slice();
    for(let j = 1; j < tempArr.length; j++){
        for(let i = j; i > 0 && arr[i] < arr[i - 1]; i--){
            changeFun(tempArr, i, i - 1);
        }
    }
}

// 交换函数
function changeFun(arr, i, j) {
  let temp = arr[i];
  arr[i] = arr[j];
  arr[j] = temp;
}
复制代码

算法效率

  • 空间复杂度:O(1)的额外空间的排序
  • 时间复杂度:O(n^2)
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改