第一種(較差) 第二種(較好:利用冒泡排序) 這道題用選擇排序還可以減少交換的次數,達到更好的效果 第三種(利用選擇排序:由於第二種) ...
第一種(較差)
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]
}