এলগরিদমের খুঁটিনাটি ~ তৃতীয় পর্ব ( সর্টিং এলগরিদম ) !

Author Topic: এলগরিদমের খুঁটিনাটি ~ তৃতীয় পর্ব ( সর্টিং এলগরিদম ) !  (Read 1572 times)

Offline Mehedifaruk

  • Newbie
  • *
  • Posts: 6
  • Test
    • View Profile
ধরুন আপনাকে কয়েকটা অগোছালো সংখ্যা  দিলাম , আর বললাম আমাকে এই সংখ্যাগুলো ছোট থেকে বড়  আকারে সাজিয়ে দিন ! সংখ্যাগুলোকে ক্রমান্বয়ে ছোট থেকে বড় আকারে সাজানোর জন্য আপনি কি করবেন ? একটু ভাবুনতো,  কি করলে অগোছালো কয়েকটা সংখ্যাকে ক্রমান্বয়ে ছোটথেকে বড় করা যায় ! থাক এতো চিন্তা করতে হবেনা , আমিই বলে দিচ্ছি কি করে করা যায় :)
ধরুন ৫ ৯ ০  ৮ এই চারটা সংখ্যাকে ছোট থেকে বড় আকারে ক্রমান্বয়ে সাজালে হয় ০ ৫ ৮ ৯ । এখন যদি আপনাকে ১০ হাজারটা অগোছালো  সংখ্যাকে ছোট থেকে বড় আকারে সজিয়ে দিতে বলা হয় তখন কি করবেন ?  হ্যাঁ তখনি আপনার কম্পিউটারের সাহায্য নিতে হবে , আর এই অগোছালো সংখ্যাকে গোছানোর জন্য কম্পিউটার কয়েকটা এলগরিদম ব্যাবহার করে  । আর সে গুলোকেই বলাহয় সর্টিং এলগরিদম  ।

অগোছালো সংখ্যাকে গোছানোর জন্য বেশ কয়েকটি এলগরিদম রয়েছে ~
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 )

                                                                                            আসুন এবারে একটা  ভিজুয়্যালি উদাহরণ  দেখে নেই  ~
                                                   
                                                                                                       

আজ এই পর্যন্তই , সময়ের অভাবে নিয়মিত লেখা দিতে পারিনা বলে দুঃখিত । সামনের পর্বে বাকি সর্টিং এলগরিদমগুলো নিয়ে লিখব ইনশাআল্লাহ  ! ততদিন ভালো থাকুন , প্রযুক্তির সাথে থাকুন :)