even

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

 

posted on 2020-05-27 14:32  even_blogs  阅读(320)  评论(0编辑  收藏  举报