সমস্যা
সি ভাষায় কী কী সর্টিং টেকনিক আছে? যেকোনো একটি সর্টিং টেকনিক উদাহরণসহ ব্যাখ্যা করুন।
সমাধান
সি ভাষায় পাঁচটি সর্টিং টেকনিক থাকে, যেগুলো হলো −
- বাবল সর্ট (অথবা) এক্সচেঞ্জ সর্ট।
- সিলেকশন সর্ট।
- ইনসারশন সর্ট (অথবা) লিনিয়ার সর্ট।
- কুইক সর্ট (অথবা) পার্টিশন এক্সচেঞ্জ সর্ট।
- মার্জ সর্ট (অথবা) এক্সটার্নাল সর্ট।
বাবল সর্ট
এটি সবচেয়ে সহজ সর্টিং টেকনিক যাকে এক্সচেঞ্জ সর্ট ও বলা হয়।
প্রক্রিয়া
প্রথম এলিমেন্টটি বাকি এলিমেন্টের সাথে তুলনা করুন এবং অর্ডার না থাকলে এক্সচেঞ্জ (সোয়াপ) করুন।
লিস্টের সব এলিমেন্ট সর্টেড হওয়া পর্যন্ত এই প্রক্রিয়া পুনরাবৃত্তি করুন।
30 50 40 10 20
নিচের এলিমেন্টগুলো বিবেচনা করুন −

প্রথম পাস
প্রথম এলিমেন্টকে বাকি एलিমেন্টের সাথে তুলনা করুন।
a[0] > a[1] $\square$ $\square$30 >50 (F) $\square$ $\square$no exchange
a[0] > a[2] $\square$ $\square$ 30 >40 (F) $\square$ $\square$ no exchange
a[0] > a[3] $\square$ $\square$ 30 >10 (T) $\square$ $\square$ exchange
a[0] > a[4] $\square$ $\square$ 10>20 (F) $\square$ $\square$ no exchange
10 50 40 30 20
দ্বিতীয় পাস
দ্বিতীয় এলিমেন্টকে বাকি এলিমেন্টের সাথে তুলনা করুন।

a[1] > a[2] $\square$ $\square$ 50 >40 (T) $\square$ $\square$ exchange
a[1] > a[3] $\square$ $\square$ 40 >30 (T) $\square$ $\square$ exchange
a[1] > a[4] $\square$ $\square$ 30 >20 (T) $\square$ $\square$ exchange
10 20 50 40 30
তৃতীয় পাস
তৃতীয় এলিমেন্টকে বাকি এলিমেন্টের সাথে তুলনা করুন।

a[2] > a[3] $\square$ $\square$ 50 >40 (T) $\square$ $\square$ exchange
a[2] > a[4] $\square$ $\square$ 40 >30 (T) $\square$ $\square$ exchange
10 20 30 50 40
চতুর্থ পাস
চতুর্থ এলিমেন্টকে বাকি এলিমেন্টের সাথে তুলনা করুন।

a[3] > a[4] $\square$ $\square$ 50 >40 (T) $\square$ $\square$ exchange
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