js算法_奇偶分割数组
分割一个整数数组,使得奇数在前偶数在后。 比如:给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]。
增加一下难度:
给定乱序数组:[2, 5, 1, 6, 3, 4],返回[1, 3, 5, 2, 4, 6]
思路分析:
排序好的数组:找到奇数进行操作。
乱序的数组:使用sort方法进行排序+提取奇数
代码实现:
1、排序好的数组找到奇数进行操作
const partitionArray = arr => {
let num = arr.length - 1;
// 其实如果是乱序数组,可以在这里使用sort将数组排序好再走下面那部分也可以
// 倒序遍历
for (let i = num; i >= 0; i--) {
if (arr[i] % 2 !== 0) {
let item = arr.splice(i, 1); // 将当前值取出来
arr.unshift(item[0]); // 添加到首位
}
}
return arr;
};
console.log('输出', partitionArray([1, 2, 3, 4]));2、乱序数组,排序+取奇数偶数
这种方法无疑是更好的解决方法,事实上涉及排序最好都是使用sort进行排序
const partitionArray = arr => {
return arr.sort((a, b) => {
if (a % 2 !== 0 && b % 2 !== 0) {
// 当两个数都是奇数的情况下 按大小排序
return a - b;
} else if (a % 2 === 0 && b % 2 === 0) {
// 当两个数都是偶数的情况下也是按大小排序
return a - b;
} else if (a % 2 !== 0) {
// 当a是奇数 要排在b的前面
return -1;
} else if (b % 2 !== 0) {
// 当b是奇数 排在a的前面
return 1;
}
});
};
console.log(
'输出',
partitionArray([1, 2, 3, 4]),
partitionArray([2, 5, 1, 6, 3, 4])
);来源链接:http://obkoro1.com/2018/11/04/算法-奇偶分割数组/
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!