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;
}

ผลลัพธ์

ต่อไปนี้เป็นเอาต์พุตคอนโซล -

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