zoukankan      html  css  js  c++  java
  • javascript的算法学习(学习中)

    1、冒泡排序法

    原理:从第一个元素开始,往后比较,遇到比自己小的元素就交换位置

    特点:交换的次数最多,所以它的性能是最差的

    let arr1 = [5,3,6,7,1,2,9,0,8,10];
    
    let method1 = function(arr) {
        let len = arr.length;
        for(let i = 0; i < len -1; i++) {
            for(let j = 0; j < len - 1 - i; j++ ) {
                if(arr[j] > arr[j + 1]) {
                    let temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        return arr;
    }
    console.time('method1的消耗的时间为');
    method1(arr1);
    console.timeEnd('method1的消耗的时间为');
    console.log(arr1);
    //输出
    //method1的消耗的时间为: 0.140869140625ms
    //[0, 1, 2, 3, 5, 6, 7, 8, 9, 10]

     2、插入排序法

    插入排序的工作原理:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

    let arr2 = [5,3,6,7,1,2,9,0,8,10];
    
    const method2 = function(arr) {
      for (let i = 1; i < arr.length; i++) {
        let pre = i - 1
        let tmp = arr[i]
        while (pre >= 0 && arr[pre] > tmp) { //如果前面的数字比后面的大
          arr[pre + 1] = arr[pre]    //那么把后面项改成较大的那位数
          pre--;                    //在前面的基础上减1,比如第0项,那么就是-1
        }
        arr[pre+1] = temp;        //再把第循环后的结果项赋值为当前项
      }
      return arr
    }
    
    console.time('method2的消耗的时间为:')
    console.log(method2(arr2));
    console.timeEnd('method2的消耗的时间为:')
    // 输出 
    // (10) [0, 1, 2, 3, 5, 6, 7, 8, 9, 10]
    // method2的消耗的时间为:: 0.461181640625ms
  • 相关阅读:
    Kafka基础
    操作系统实验(一)-Shell编程
    计算机组成原理05-系统总线(下)
    计算机组成原理04-系统总线
    计算机组成原理03-概论思考
    计算机组成原理02-系统概论(下)
    计算机组成原理01-系统概论
    Python&&Pip
    我的爱情观
    node.js简介
  • 原文地址:https://www.cnblogs.com/rickyctbu/p/12972916.html
Copyright © 2011-2022 走看看