数组中的第K个最大元素

Posted 跌倒的小黄瓜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组中的第K个最大元素相关的知识,希望对你有一定的参考价值。

第一种(较差)

export default (arr, k) => {
  return arr.sort((a, b) => b - a)[k - 1]
}

第二种(较好:利用冒泡排序)

export default (arr, k) => {
  let len = arr.length - 1
  for (let i = len, tmp; i > len - k; i--) {
    for (let j = 0; j < i; j++) {
      if (arr[j] > arr[j + 1]) {
        tmp = arr[j]
        arr[j] = arr[j + 1]
        arr[j + 1] = tmp
      }
    }
  }
  // arr[len+1-k]
  return arr[len - (k - 1)]
}

这道题用选择排序还可以减少交换的次数,达到更好的效果

第三种(利用选择排序:由于第二种)

export default (arr, k) => {
  // 选择排序
  for (let i = 0, len = arr.length, max; i < k; i++) {
    max = arr[i]
    for (let j = i + 1; j < len; j++) {
      if (arr[j] > max) {
        let c = max
        max = arr[j]
        arr[j] = c
      }
    }
    arr[i] = max
  }
  return arr[k - 1]
}

以上是关于数组中的第K个最大元素的主要内容,如果未能解决你的问题,请参考以下文章

数组中的第K个最大元素 优先队列

LeetCode.215-数组中的第K个最大元素

Leetcode 215. 数组中的第K个最大元素 By Python

215. 数组中的第K个最大元素

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:数组中的第K个最大元素

LeetCode:数组中的第K个最大元素215