将数组中奇数放在右边,偶数放在左边,不允许使用额外空间
说明:从一个数组中间删除元素splice的运行代价是比较大的
var arr = [1, 4, 5, 2, 3, 7, 8]
arr.sort(function (a, b) {
return a % 2 !== 0
})
var arr = [1, 4, 5, 2, 3, 7, 8]
arr.sort(function (a, b) {
return a % 2 !== 0
})
下面的讨论暂时不考虑空间复杂度。
arr.sort((a) => -a % 2)
arr.sort((a) => -a % 2)
arr.filter((item) => item % 2 === 1).concat(arr.filter((item) => item % 2 === 0)
arr.filter((item) => item % 2 === 1).concat(arr.filter((item) => item % 2 === 0)
arr.reduce((prev, curr) => curr % 2 === 0 ? [...prev, curr] : [curr, ...prev], [])
arr.reduce((prev, curr) => curr % 2 === 0 ? [...prev, curr] : [curr, ...prev], [])
arr.sort((a, b) => (a % 2 === 1 ? a / 9999999 : a) - (b % 2 === 1 ? b / 9999999 : b))
arr.sort((a, b) => (a % 2 === 1 ? a / 9999999 : a) - (b % 2 === 1 ? b / 9999999 : b))