ধরুন আপনাকে কয়েকটা অগোছালো সংখ্যা দিলাম, আর বললাম আমাকে এই সংখ্যাগুলো ছোট থেকে বড় আকারে সাজিয়ে দিন! সংখ্যাগুলোকে ক্রমান্বয়ে ছোট থেকে বড় আকারে সাজানোর জন্য আপনি কি করবেন? একটু ভাবুনতো, কি করলে অগোছালো কয়েকটা সংখ্যাকে ক্রমান্বয়ে ছোটথেকে বড় করা যায়! থাক এতো চিন্তা করতে হবেনা, আমিই বলে দিচ্ছি কি করে করা যায়
ধরুন ৫ ৯ ০ ৮ এই চারটা সংখ্যাকে ছোট থেকে বড় আকারে ক্রমান্বয়ে সাজালে হয় ০ ৫ ৮ ৯। এখন যদি আপনাকে ১০ হাজারটা অগোছালো সংখ্যাকে ছোট থেকে বড় আকারে সজিয়ে দিতে বলা হয় তখন কি করবেন? হ্যাঁ তখনি আপনার কম্পিউটারের সাহায্য নিতে হবে, আর এই অগোছালো সংখ্যাকে গোছানোর জন্য কম্পিউটার কয়েকটা এলগরিদম ব্যবহার করে। আর সে গুলোকেই বলাহয় সর্টিং এলগরিদম।
অগোছালো সংখ্যাকে গোছানোর জন্য বেশ কয়েকটি এলগরিদম রয়েছে ~
Bubble Sort
Insertion Sort
Selection Sort
Quicksort
Mergesort
Heapsort
আজ আলোচনা করব Bubble Sort Algorithm নিয়ে! বলে রাখা ভালো, বর্তমানে Bubble Sort এলগরিদম ব্যবহার করা হয়না বললেই চলে। তবে নতুনদের বুঝার জন্যই মূলত আজকের এই লেখা। আসুন দেরী না করে শিখে ফেলি Bubble Sort এলগরিদম কিভাবে কাজ করে। Bubble Sort একটা সংখ্যার সাথে আরেকটা সংখ্যার তুলনা করে তাদেরকে ক্রমান্বয়ে সাজায়।
5 1 4 2 8 এই কয়েকটা অগোছালো সংখ্যা নিলাম - এখন Bubble সর্ট এর নিয়ম অনুযায়ী 5 এবং 1 এর মধ্যে তুলনা করব, যেহেতু 5 এর চেয়ে 1 ছোট সেহেতু 1 আগে চলে যাবে এবং 5 সামনে চলে যাবে।
প্রথম ধাপঃ- (5 1 4 2 8) –> (1 5 4 2 8) এখানে 5 > 1
এবার 5 এর সাথে 4 এর তুলনা করব, যেহেতু 5 এর চেয়ে 4 ছোট সেহেতু 4 সরে গিয়ে 5 এর স্থানে বসে যাবে।
(1 5 4 2 8) –> (1 4 5 2 8), কারণ 5 > 4
এবার 5 এর সাথে 2 এর তুলনা করব
(1 4 5 2 8) –> (1 4 2 5 8) এখানে 5 > 2
এবারে 5 এর সাথে 8 এর তুলনা করব, যেহেতু 8 আগে থেকেই বড় সেক্ষেত্রে এখানে কোন পরিবর্তন হবে না।
(1 4 2 5 8) –> (1 4 2 5 8)
দ্বিতীয় ধাপঃ-
(1 4 2 5 8) –> (1 4 2 5 8)
(1 4 2 5 8) –> (1 2 4 5 8), এখানে 4 > 2
(1 2 4 5 8) –> (1 2 4 5 8)
(1 2 4 5 8) –> (1 2 4 5 8 )
এখানেই আমাদের সর্টিং শেষ, কিন্তু আমাদের এলগরিদম এটা জানেনা! যতক্ষণ না পর্যন্ত আর কোন সংখ্যার সোয়াপিং হয়। তাই পুরো প্রসেসটা আবার শেষ বারের মত করতে হবে!
সর্বশেষ ধাপঃ
( 1 2 4 5 8) –> (1 2 4 5 8)
(1 2 4 5 8) –> (1 2 4 5 8)
(1 2 4 5 8) –> (1 2 4 5 8)
(1 2 4 5 8 ) –> (1 2 4 5 8)
আমি মেহেদী ফারুক। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 7 বছর 3 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 3 টি টিউন ও 0 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।