সমস্যা
সি ল্যাঙ্গুয়েজে বিভিন্ন সাজানোর কৌশল কি কি? উদাহরণ সহ যেকোনো একটি সাজানোর কৌশল ব্যাখ্যা করুন।
সমাধান
সি ভাষা পাঁচটি সাজানোর কৌশল প্রদান করে, যা নিম্নরূপ -
- বাবল বাছাই (বা) এক্সচেঞ্জ সর্ট।
- নির্বাচন বাছাই।
- সন্নিবেশ বাছাই (বা) লিনিয়ার সর্ট।
- দ্রুত বাছাই (বা) পার্টিশন বিনিময় বাছাই।
- সর্ট মার্জ (বা) এক্সটার্নাল সর্ট।
বুদবুদ সাজান
এটি হল সবচেয়ে সহজ বাছাই কৌশল যাকে এক্সচেঞ্জ সর্টও বলা হয়।
প্রক্রিয়া
-
তালিকার অবশিষ্ট উপাদানগুলির সাথে প্রথম উপাদানটির তুলনা করুন এবং যদি সেগুলি ক্রমানুসারে না থাকে তবে তাদের বিনিময় (অদলবদল) করুন৷
-
সমস্ত উপাদানগুলি সাজানো না হওয়া পর্যন্ত তালিকার অন্যান্য উপাদানগুলির জন্য একই পুনরাবৃত্তি করুন৷
30 50 40 10 20
নীচে দেওয়া উপাদানগুলি বিবেচনা করুন -
প্রথম পাস
বাকি উপাদানের সাথে প্রথম উপাদানের তুলনা করুন।
a[0]> a[1] $\square$ $\square$30>50 (F) $\square$ $\square$ কোন বিনিময় নেই
a[0]> a[2] $\square$ $\square$ 30>40 (F) $\square$ $\square$ কোন বিনিময় নেই
a[0]> a[3] $\square$ $\square$ 30>10 (T) $\square$ $\square$ বিনিময়
a[0]> a[4] $\square$ $\square$ 10>20 (F) $\square$ $\square$ কোন বিনিময় নেই
10 50 40 30 20
দ্বিতীয় পাস
অবশিষ্ট উপাদানের সাথে দ্বিতীয় উপাদানের তুলনা করুন।
a[1]> a[2] $\square$ $\square$ 50>40 (T) $\square$ $\square$ বিনিময়
a[1]> a[3] $\square$ $\square$ 40>30 (T) $\square$ $\square$ বিনিময়
a[1]> a[4] $\square$ $\square$ 30>20 (T) $\square$ $\square$ বিনিময়
10 20 50 40 30
তৃতীয় পাস
অবশিষ্ট উপাদানের সাথে তৃতীয় উপাদানের তুলনা করুন।
a[2]> a[3] $\square$ $\square$ 50>40 (T) $\square$ $\square$ বিনিময়
a[2]> a[4] $\square$ $\square$ 40>30 (T) $\square$ $\square$ বিনিময়
10 20 30 50 40
চতুর্থ পাস
বাকি উপাদানের সাথে চতুর্থ উপাদানের তুলনা করুন।
a[3]> a[4] $\square$ $\square$ 50>40 (T) $\square$ $\square$ বিনিময়
10 20 30 40 50
প্রক্রিয়া
নীচে দেওয়া হিসাবে বুদ্বুদ সাজানোর পদ্ধতি পড়ুন -
for (i=0; i<n-1; i++){ for (j=i+1; j<n; j++){ if (a[i] > a[j]){ t=a[i]; a[i] = a[j]; a[j] = t; } } }
উদাহরণ
বুদবুদ সাজানোর কৌশল -
এর জন্য সি প্রোগ্রামটি নিচে দেওয়া হল#include<stdio.h> int main(){ int a[50], i,j,n,t; printf("enter the No: of elements in the list:\n"); scanf("%d", &n); printf("enter the elements:\n"); for(i=0; i<n; i++){ scanf ("%d", &a[i]); } printf("Before bubble sorting the elements are:\n"); for(i=0; i<n; i++) printf("%d \t\n", a[i]); for (i=0; i<n-1; i++){ for (j=i+1; j<n; j++){ if (a[i] > a[j]){ t = a[i]; a[i] = a[j]; a[j] = t; } } } printf ("after bubble sorting the elements are:\n"); for (i=0; i<n; i++) printf("%d\t", a[i]); return 0; }
আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
enter the No: of elements in the list: 5 enter the elements: 12 11 45 26 67 Before bubble sorting the elements are: 12 11 45 26 67 after bubble sorting the elements are: 11 12 26 45 67