Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

อัลกอริทึมการเรียงลำดับแบบพิเศษใน 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;
};
console.log(specialSort(arr));

ผลลัพธ์

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