三大算法(二)js实现选择排序

/*
        规律总结: 
        1, 要进行从头到尾找出其中的最大值(及下标), 并进行交换的趟数为n-1, n 为数组长度
        2, 每-趟要做的事情是: a)找最大值, b)并将该最大值跟这一趟的最后一项进行交换; 
        3, 每一趟要从中找最大值的元素个数都比前一趟少 1, 其中第一趟有n 个。
    */

      var arr = [18, 22, 12, 15, 23, 9];
      console.log(arr); // => [18, 22, 12, 15, 23, 9]
      for (var i = 0; i < arr.length - 1; i++) {
        var max = arr[0];
        var maxIndex = 0;
        for (var j = 0; j < arr.length - i; j++) {
          //   if (arr[j] > max) {
          //     max = arr[j];
          //     maxIndex = j;
          //   }
          // 简写:
          arr[j] > max ? ((max = arr[j]), (maxIndex = j)) : ((max = max), (maxIndex = maxIndex));
        }
        [arr[maxIndex], arr[arr.length - 1 - i]] = [arr[arr.length - 1 - i], arr[maxIndex]];
      }
      console.log(arr); // => [9, 12, 15, 18, 22, 23]

 

posted @ 2021-04-20 15:25  web_cnblogs  阅读(47)  评论(0)    收藏  举报