奇偶排序

来源:5-3 奇偶排序

学无止境DDH

2019-03-05

看到题目的第一眼,脑海首先想出的一种蠢笨的方法,算是对本题的扩展。。。

const sortArrayByParity = A => {
	// 分别定义,存放奇数、偶数和结果的空数组
	let oddArr = []
	let evenArr = []
	let resultArr = []

	// 遍历A,进行奇偶数分类
	A.forEach(item => {
		if (item % 2) {
			oddArr.push(item)
		} else {
			evenArr.push(item)
		}
	})

	//循环依次插入奇偶数
	for (let i = 0; i < A.length; i++) {
		if (i % 2) {
			resultArr.push(oddArr[(i - 1) / 2])
		} else {
			resultArr.push(evenArr[i / 2])
		}
	}

	return resultArr
}
写回答

3回答

nkliyc

2019-06-18

export default (arr) => {

let result = new Array(arr.length)

// arr.sort((a, b) => a - b)

for(let i = 0,len = arr.length, j = 0, k = 0; i < len; i++) {

if(arr[i] % 2 === 0) {

result[j * 2] = arr[i]

j++

} else {

result[k * 2 + 1] = arr[i]

k++

}

}

return result

};



0
0

旋涡鸣人_

2019-04-01

export default (arr) => {

arr.sort((a, b) => a - b)


// 对数组进行遍历

let odds = []

let evens = []

arr.forEach((item, i) => {

if (item % 2 === 1) {

evens.push(item)

} else {

odds.push(item)

}

})


let res = []


odds.forEach((item, i) => {

res[2 * i] = item

})


evens.forEach((item, i) => {

res[2 * i + 1] = item

})


console.log(res, 'sort1...')


return res

}





跟上面同学的类似,执行效率我觉得老师的是最简单的,执行次数少。。。

0
0

快乐动起来呀

2019-03-05

同学可以把题目放到issue区吗,方便大家review,感谢

0
0

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 393 问题

查看课程