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

অ্যারে সোর্টেড কিনা চেক (অর্ডর নির্বিশেষে) - JavaScript

একটি অ্যারে সোর্টেড (বা অ্যাসেন্ডিং বা ডেসেন্ডিং) কিনা তা চেক করা, অর্ডর নির্দিষ্ট না করে।

লজিক

অ্যারে সোর্টেড থাকলে সব উপাদান অথবা নন-ডিক্রিজিং অথবা নন-ইনক্রিজিং অর্ডারে থাকবে।

সমাধান

const isSorted = (arr) => {
  if (arr.length <= 1) return true;
  
  // দিক নির্ধারণ: প্রথম দুটি ভিন্ন উপাদান থেকে
  let direction = 0; // 0 = unknown, 1 = ascending, -1 = descending
  
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] !== arr[i - 1]) {
      direction = arr[i] > arr[i - 1] ? 1 : -1;
      break;
    }
  }
  
  // সব উপাদান একই হলে
  if (direction === 0) return true;
  
  // বাকি উপাদান চেক
  for (let i = 1; i < arr.length; i++) {
    if (direction === 1 && arr[i] < arr[i - 1]) return false;
    if (direction === -1 && arr[i] > arr[i - 1]) return false;
  }
  
  return true;
};

// সংক্ষিপ্ত ভার্সন (every)
const isSortedShort = (arr) => {
  if (arr.length <= 1) return true;
  
  const isAscending = arr.every((val, i) => i === 0 || val >= arr[i - 1]);
  const isDescending = arr.every((val, i) => i === 0 || val <= arr[i - 1]);
  
  return isAscending || isDescending;
};

// টেস্ট
console.log(isSorted([1, 3, 56, 87, 99, 102]));        // true (ascending)
console.log(isSorted([100, 50, 25, 10, 5, 1]));       // true (descending)
console.log(isSorted([1, 3, 2, 4, 5]));               // false
console.log(isSorted([5, 5, 5, 5]));                  // true (all equal)
console.log(isSorted([]));                            // true

মূল কোডের সমস্যা

মূল কোডে নেগেটিভ নম্বর চেক ছিল যা ভুল - সোর্টিংয়ের সাথে নেগেটিভ নম্বরের কোনো সম্পর্ক নেই। উপরের সমাধানটি সঠিক।

উৎপাদন

true
  1. জাভাস্ক্রিপ্টে ইউজার ইনপুট স্ট্রিং অ্যারেতে আছে কিনা চেক করা

  2. জাভাস্ক্রিপ্টে নাম্বার সর্ট: শূন্য আগে, বাকি অবরোহী ক্রমে

  3. জাভাস্ক্রিপ্টে বাইনারি রিপ্রেজেন্টেশনে ১ বিটের সংখ্যা অনুযায়ী পূর্ণসংখ্যা সর্ট করা

  4. জাভাস্ক্রিপ্টে সর্ট করা অ্যারে-এর বর্গ সর্ট করা অবস্থায় বের করা