zoukankan      html  css  js  c++  java
  • 【前端算法3】插入排序

    /** 插入排序
     *  同一个数组,从第一个元素开始,该元素可以认为已经被排序
     *  取出下一个元素,在已经排序的元素序列中从后向前扫描
     *  如果当前值大于前一个值 让后一个值等于前一个值 否则跳出当前循环
     *
     *  注意点:(当前值大于前一个值 让后一个值等于前一个值)只交换了一半,while外层还需要交换另外一半
     * **/
    function insertSort(arr) {
      let i = 1;
      let j,key;
      for (i; i < arr.length; i++) {
        j = i;
        key = arr[j];
        // while 是 将目标值从后往前 找插入的位置
        while (--j > -1) { // 如果 j = -1 则目标值比所有的已排序元素都小
          // 如果当前值大于前一个值
          if (arr[j] > key) {
            arr[j+1] = arr[j]; // 让后一个值等于前一个值
          } else {
            break; // 否则跳出当前循环
          }
        }
        arr[j+1] = key; // 与冒泡同理,让前一个值等于后一个值(两个值交换了位置)
      }
      return arr;
    }
    let arr = [2, 8, 4, 5, 3, 7, 6];
    let res = insertSort(arr);
    console.log(res);
  • 相关阅读:
    最短路详解
    树状数组基础
    并查集初步
    python shell的交互模式和文本编辑模式
    基于python的selenium自动化测试环境搭建
    Nagios基本搭建
    mysql错误代码对照表较完整
    搭建phpMyAdmin
    Cent OS 7 搭建MySQL
    详解封装源码包成RPM包
  • 原文地址:https://www.cnblogs.com/mailyuan/p/12217843.html
Copyright © 2011-2022 走看看