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
  • 相关阅读:
    MUTC2013 E-Deque-hdu 4604
    MUTC7 C
    MUTC7 A-As long as Binbin loves Sangsang
    MUTC2013 J-I-number-hdu4608
    MUTC2013 H-Park Visit-hdu4607
    判断点是否在多边形内 扫描法
    蓝桥杯 基础练习 十六进制转八进制
    判断点是否在三角形内
    判断点在线段上
    向量的叉乘
  • 原文地址:https://www.cnblogs.com/rickyctbu/p/12972916.html
Copyright © 2011-2022 走看看