বাবল সোর্ট হলো একটি সহজ সোর্টিং অ্যালগরিদম যেখানে প্রতিটি পাসে পাশাপাশি দুটি উপাদান তুলনা করা হয় এবং অর্ডার ঠিক না থাকলে সিম্পল করে বদলানো হয়।
কীভাবে কাজ করে
- প্রথম উপাদান থেকে শুরু করে পাশাপাশি দুটি তুলনা করুন
- বড়টি হলে সিম্পল করুন
- প্রতিটি পাসে সবচেয়ে বড় উপাদান শেষে চলে যায় (বাবল আপ)
- প্রক্রিয়া পুনরাবৃত্তি করুন যতক্ষণ না সোর্ট হয়
বাস্তবায়ন
const swap = (arr, i, j) => {
[arr[i], arr[j]] = [arr[j], arr[i]]; // ES6 ডিস্ট্রাকচারিং
};
const bubbleSort = (arr) => {
const len = arr.length;
for (let i = 0; i < len - 1; i++) {
let swapped = false; // অপ্টিমাইজেশন: যদি কোনো সিম্পল না হয়
for (let j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr, j, j + 1);
swapped = true;
}
}
// যদি কোনো সিম্পল না হয়, তবে ইতিমধ্যে সোর্টেড
if (!swapped) break;
}
return arr;
};
// টেস্ট
const arr = [4, 56, 4, 23, 8, 4, 23, 2, 7, 8, 8, 45];
console.log(bubbleSort([...arr])); // অরিজিনাল অ্যারে পরিবর্তন না করার জন্য কপি ব্যবহার
// [2, 4, 4, 4, 7, 8, 8, 8, 23, 23, 45, 56]
জটিলতা বিশ্লেষণ
| কেস | সময় জটিলতা | স্থান জটিলতা |
|---|---|---|
| বেস্ট (ইতিমধ্যে সোর্টেড) | O(n) | O(1) |
| এভারেজ | O(n²) | O(1) |
| ওয়ার্স্ট | O(n²) | O(1) |
উৎপাদন
[ 2, 4, 4, 4, 7, 8, 8, 8, 23, 23, 45, 56 ]