前端JavaScript

js 各种算法

2021-12-17  本文已影响0人  贵贵贵子

数组排序

冒泡排序

 let arr = [1, 33, 33, 1, 2,1 , 57,33];
    console.log([...new Set(arr)])
    let orderArr = [];
    function Fun(arr) {
      const len = arr.length;
      for (let i = 0; i < len - 1; i++) {
          for(let j=0; j < len -1 -i;j++){
              let temp = arr[j]
              if(arr[j]>arr[j+1]){
                arr[j]=arr[j+1]
                arr[j+1]=temp
              }
          }
      }
      return arr
    }

选择排序(跟冒泡排序的思维有点像,只是一直跟最后一个比,这样一轮下来,就排完序了。)

var arr = [1,2,3,5,4,7,6];
    for(var j = 0, l = arr.length; j < l; j++){
        for(k = l; k > j; k--){
            if(arr[j] > arr[k]){
                var temp = arr[j];
                arr[j] = arr[k];
                arr[k] = temp;
            }
        }
    }
    console.log(arr); //[1,2,3,4,5,6,7]  

数组去重

首先是最简单实现的(Set)

let arr = [1, 33, 33, 1, 2,1, 57,33];
console.log([...new Set(arr)])// [1, 33, 2, 57]

双重for循环

  var arr = [1, 5, 6, 0, 7, 3, 0, 5, 9, 5, 5];
    function unique(arr) {
      for (var i = 0, len = arr.length; i < len; i++) {
        for (var j = i + 1, len = arr.length; j < len; j++) {
          if (arr[i] === arr[j]) {
            arr.splice(j, 1);
            j--; // 每删除一个数j的值就要减1
            len--; // j值减小时len也要相应减1(减少循环次数,节省性能)
          }
        }
      }
      return arr;
    }

indexOf

var arr = [1, 2, 3 , 3, 2, 3, 3, 3];
    function unique(arr) {
      var arr1 = []; // 新建一个数组来存放arr中的值
      for (var i = 0, len = arr.length; i < len; i++) {
        if (arr1.indexOf(arr[i]) === -1) {
          arr1.push(arr[i]);
        }
      }
      return arr1;
    }
    console.log(unique(arr)); // [1,2,3]
上一篇下一篇

猜你喜欢

热点阅读