vlambda博客
学习文章列表

前端常用算法笔记-插入排序

前端常用算法笔记-插入排序(insertSort)

首先固定函数名:insertSort

插入排序的原理:类似于打扑克摸牌排序,将新摸的牌与手里现有的牌比较,然后放到合适位置就可以。

关键函数:

splice()

数组中添加或删除元素

unshift()

数组最前处添加元素


整个函数有两个for循环组成:

  1. 第一层循环取出原数组未排序的数组。

  2. 第二层循环与新数组的每个进行比较。

在执行循环前需要定义空数组,并且将原数组的第一个元素添加进去。


具体代码:

/*
  插入排序
  由小到大
*/

  function insertSort(arr){
    //设置保存结果的数组
    let res=[];
    //将第一个存入结果数据
    res.push(arr[0])
    //循环比较其他数
    for(let i=1;i<arr.length;i++){
      //A为数组中当前取出的数
      let A=arr[i];
      //循环比较结果中的每个数
      for(let j=res.length-1;j>=0;j--){
        //B为结果中当前比较的数
        let B=res[j];
        //如果取出的数比结果中的大,插入其后面
        if(A>B){
          res.splice(j+1,0,A);
          break;
        }
        //如果比较到第一个,将其插入数组最前
        if(j===0){
          res.unshift(A);
        }
      }
    }
    //输出结果
    console.log(res);
    return res;
  }
  
  let arr = [13,121,325,757,7,89,93,2324,21,5,232,57,9];
  insertSort(arr);