获取到一个数组中的最大值和第二大的值,不允许对数组进行任何排序,不允许用使用 js 内置的各种方法(解决办法:冒泡排序)

66 阅读1分钟
      let ary = [43,1,34,98,555,356];
      
      function aryMethod(arr=[]) {
        // 如果长度小于2 那么直接返回数组
        if(arr.length<2)return [arr[0],null];
        for (let i = 0; i < arr.length - 1; i++) {
          // 比较轮数
          for (let j = 0; j < arr.length - 1 - i; j++) {
            // 每轮比较次数,由于每次最后一个都是最大值,每轮少比较i次
            if (arr[j] > arr[j + 1]) {
              [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
            }
          }
        }
        return [arr[arr.length-1],arr[arr.length-2]];
      };

      let [max,second] = aryMethod(ary)||[];
      console.log(max,second);// 555   356