সর্টিং কেন জরুরি?
সর্টিং হলো এলিমেন্টগুলোকে आरোহী (ascending) অথবা অवरোহী (descending) ক্রমে সাজানোর প্রক্রিয়া। মানুষ যখন দ্রুত খুঁজে বের করার গুরুত্ব বুঝল, তখন সর্টিং কনসেপ্টের জন্ম হল।
- ডাটাবেসে নির্দিষ্ট রেকর্ড খুঁজতে হলে।
- রোল নম্বর লিস্টে নাম খুঁজতে হলে।
- টেলিফোন ডিরেক্টরিতে নম্বর খুঁজতে হলে।
- বইয়ে নির্দিষ্ট পৃষ্ঠা খুঁজতে হলে।
ডেটা যদি অक्रमবিন্যস্ত থাকে, তাহলে খুঁজে বের করা কঠিন হয়। সর্টিং ডেটাকে ক্রমবদ্ধ করে সার্চিংকে সহজ ও দ্রুত করে দেয়।
সর্টিং দক্ষতা (Sorting Efficiency) বিচার করার মানদণ্ড
কম্পিউটার সায়েন্টিস্টরা সর্টিং সমস্যা সমাধানের জন্য অনেক অ্যালগরিদম উন্নত করেছেন। কোন অ্যালগরিদম ভালো সেটি বিচার করার জন্য দুটি প্রধান মানদণ্ড:
- সময় (Time): ডেটা সর্ট করতে কতক্ষণ লাগে।
- মেমরি স্পেস (Memory Space): সর্ট করার জন্য অতিরিক্ত কতটুকু মেমরি লাগে।
উদাহরণ প্রোগ্রাম (সিলেকশন সর্ট ব্যবহার করে)
#include <stdio.h>
int main() {
int a[50], i, j, n, t, sm;
printf("Enter number of elements: ");
scanf("%d", &n);
printf("Enter elements: ");
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for (i = 0; i < n-1; i++) {
sm = i;
for (j = i+1; j < n; j++) {
if (a[j] < a[sm])
sm = j;
}
t = a[i];
a[i] = a[sm];
a[sm] = t;
}
printf("After sorting: ");
for (i = 0; i < n; i++)
printf("%d\t", a[i]);
return 0;
}
আউটপুট
Enter number of elements: 4 Enter elements: 34 12 56 7 After sorting: 7 12 34 56
প্রধান সর্টিং অ্যালগরিদমগুলো
- বাবল সর্ট (Bubble Sort)
- সিলেকশন সর্ট (Selection Sort)
- ইনসারশন সর্ট (Insertion Sort)
- মার্জ সর্ট (Merge Sort) — O(n log n)
- কুইক সর্ট (Quick Sort) — O(n log n)
- হিপ সর্ট (Heap Sort) — O(n log n)
বড় ডেটাসেটের জন্য মার্জ, কুইক বা হিপ সর্ট ব্যবহার করা ভালো।