冒泡排序,简称:体育委员两两摸头法
思路:(关于绝对值从小到大排序)
1.第一遍排序,i=0~10。最大的绝对值肯定已经到了最后面。
2.所以第二次排序,只需比较i=0~9,就可以了。
3.所以每一次循环,只能确定倒数的还未确定的一个。
0、1、2、3、4、5、6、7、8、9、10
0、1、2、3、4、5、6、7、8、9
0、1、2、3、4、5、6、7、8
0、1、2、3、4、5、6、7
...
0
<script>
function take10ClosestNums(arr, closest, count) {
let newArr = []
for (let i = 0; i < arr.length; i++) {
newArr.push({
value: arr[i],
absoluteNum: Math.abs(arr[i] - closest)
})
}
for (var j = 0; j < newArr.length - 1; j++) {
for (var i = 0; i < newArr.length - 1 - j; i++) {
if (newArr[i].absoluteNum > newArr[i + 1].absoluteNum) {
var temp = newArr[i];
newArr[i] = newArr[i + 1];
newArr[i + 1] = temp;
}
}
}
console.log(newArr)
return newArr.splice(0, count).map(e => e.value)
}
let arr = [1, 10, 11, 100, 20, 500, -100, -10, 4, 99, 43, -60]
console.log(take10CloseestNums(arr, 100, 5))
</script>