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 次瀏覽

開啟你的 職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.