JavaScript 中的特殊排序算法

我们需要编写一个 JavaScript 函数,它接受一个整数数组作为唯一参数。

该函数应根据以下条件对数组进行排序 -

  • 所有偶数都按升序排序

  • 所有奇数按降序排列

  • 偶数和奇数的相对位置保持不变

例如 -

如果输入数组是 -

const arr = [12, 17, 15, 24, 1, 6];

那么输出应该是 -

const output = [6, 17, 15, 12, 1, 24];

示例

以下是代码 -

const arr = [12, 17, 15, 24, 1, 6];
const specialSort = (nums = []) => {
   const oddArr = [], evenArr = [];
   for (let i = 0; i < nums.length; i++){
      if (nums[i] & 1) {
         oddArr.push(i);
      } else {
         evenArr.push(i);
      }
   }
   nums.sort((a, b) => a - b);
   let odd =oddArr.length- 1, even = 0;
   const res = [];
   for (let i = 0; i < nums.length; i++){
      if (nums[i] & 1) {
         res[oddArr[odd--]] = nums[i];
      } else {
         res[evenArr[even++]] = nums[i];
      }
   }
   return res;
}
输出结果

以下是控制台输出 -

[ 6, 17, 15, 12, 1, 24 ]