কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে অড এবং ইভেন এলিমেন্ট আলাদা করে সর্ট করা


সমস্যা বিবরণ

ইন্টিজার অ্যারে দেওয়া আছে। সব অড নম্বর আগে, তারপর সব ইভেন নম্বর সর্ট করতে হবে। অড/ইভেন গ্রুপের ভেতরে অর্ডার গুরুত্বপূর্ণ নয়।

ইনপুট: [0, 2, 4, 6, 8, 0, 1, 3, 5, 7, 9, 1]

আউটপুট: [1, 3, 5, 7, 9, 1, 0, 2, 4, 6, 8, 0]

সমাধান

const arr = [0, 2, 4, 6, 8, 0, 1, 3, 5, 7, 9, 1];

const sortOddEven = (arr = []) => {
  let i = 0, j, temp;
  while (i < arr.length - 1) {
    j = i;
    while (!(arr[j] % 2) && arr[j + 1] % 2) {
      temp = arr[j];
      arr[j] = arr[j + 1];
      arr[j + 1] = temp;
      if (!j) break;
      j--;
    }
    i++;
  }
};

sortOddEven(arr);
console.log(arr);

আউটপুট

[ 1, 3, 5, 7, 9, 1, 0, 2, 4, 6, 8, 0 ]

ব্যাখ্যা

  • বাবল সর্টের ভেরিয়েন্ট: ইভেন নম্বর (arr[j]%2===0) এবং এর পর অড নম্বর (arr[j+1]%2===1) পাওয়া গেলে স্ব্যাপ করা হয়।
  • সোয়াপের পর j-- দিয়ে পেছনে যেতে থাকে যাতে অড নম্বর যথাসম্ভব আগে চলে যায়।
  • ইন-প্লেস সর্টিং, O(n²) ওর্স্ট কেস।

সিম্পলার ভার্সন (ES6+)

const sortOddEvenSimple = arr => 
  [...arr.filter(x => x % 2), ...arr.filter(x => x % 2 === 0)];
  1. জাভাস্ক্রিপ্টে সংখ্যা বিজোড় নাকি জোড় সেটি নির্ণয় করার পদ্ধতি

  2. জাভাস্ক্রিপ্টে অ্যারে এলিমেন্ট সর্টিং (Sorting)

  3. জাভাস্ক্রিপ্ট দিয়ে HTML-এ ক্লাস (odd এবং even) যোগ করার পদ্ধতি

  4. পাইথনে সম এবং বিষম সূচকের উপাদান অদলবদল করুন