সমস্যা
সি ল্যাঙ্গুয়েজে বিভিন্ন সাজানোর কৌশল কি কি? উদাহরণ সহ যেকোনো একটি সাজানোর কৌশল ব্যাখ্যা করুন।
সমাধান
সি ভাষা পাঁচটি সাজানোর কৌশল প্রদান করে, যা নিম্নরূপ -
- বাবল বাছাই (বা) এক্সচেঞ্জ সর্ট।
- নির্বাচন বাছাই।
- সন্নিবেশ বাছাই (বা) লিনিয়ার সর্ট।
- দ্রুত বাছাই (বা) পার্টিশন বিনিময় বাছাই।
- সর্ট মার্জ (বা) এক্সটার্নাল সর্ট।
বুদবুদ সাজান
এটি হল সবচেয়ে সহজ বাছাই কৌশল যাকে এক্সচেঞ্জ সর্টও বলা হয়।
প্রক্রিয়া
-
তালিকার অবশিষ্ট উপাদানগুলির সাথে প্রথম উপাদানটির তুলনা করুন এবং যদি সেগুলি ক্রমানুসারে না থাকে তবে তাদের বিনিময় (অদলবদল) করুন৷
-
সমস্ত উপাদানগুলি সাজানো না হওয়া পর্যন্ত তালিকার অন্যান্য উপাদানগুলির জন্য একই পুনরাবৃত্তি করুন৷
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