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 ]

更新于: 2021 年 1 月 22 日

64 次浏览

开启你的 职业生涯

完成课程以获得认证

开始
广告