सॉर्टिंग क्या है?
सॉर्टिंग (Sorting) डेटा को किसी विशेष क्रम (आरोही/अवरोही) में व्यवस्थित करने की प्रक्रिया है। C भाषा में कई सॉर्टिंग एल्गोरिदम लागू किए जा सकते हैं।
पांच प्रमुख सॉर्टिंग तकनीकें
- बबल सॉर्ट (Bubble Sort) - एक्सचेंज सॉर्ट भी कहलाता है
- सिलेक्शन सॉर्ट (Selection Sort)
- इन्सर्शन सॉर्ट (Insertion Sort) - रैखिक सॉर्ट भी कहलाता है
- क्विक सॉर्ट (Quick Sort) - पार्टीशन एक्सचेंज सॉर्ट
- मर्ज सॉर्ट (Merge Sort) - एक्सटर्नल सॉर्ट
बबल सॉर्ट (Bubble Sort) - विस्तृत व्याख्या
सबसे सरल सॉर्टिंग एल्गोरिदम। आसन्न (adjacent) तत्वों की तुलना करके उन्हें क्रम में रखता है।
कार्यविधि
- पहले तत्व की तुलना बाकी सभी से करें, आवश्यकता होने पर अदला-बदली (swap) करें।
- यही प्रक्रिया दूसरे, तीसरे... तत्व के लिए दोहराएं।
- प्रत्येक पास (pass) के बाद सबसे बड़ा तत्व अंत में पहुँच जाता है।
उदाहरण: सरणी [30, 50, 40, 10, 20]
पहला पास: [10, 50, 40, 30, 20] (30 और 10 की अदला-बदली) दूसरा पास: [10, 20, 50, 40, 30] (50, 40, 30, 20 में अदला-बदली) तीसरा पास: [10, 20, 30, 50, 40] (50, 40 की अदला-बदली) चौथा पास: [10, 20, 30, 40, 50] (50, 40 की अदला-बदली)
बबल सॉर्ट का C प्रोग्राम
#include <stdio.h>
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// अदला-बदली
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
}
int main() {
int n;
printf("तत्वों की संख्या: ");
scanf("%d", &n);
int arr[n];
printf("%d तत्व दर्ज करें:\n", n);
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
printf("सॉर्टिंग से पहले: ");
printArray(arr, n);
bubbleSort(arr, n);
printf("सॉर्टिंग के बाद: ");
printArray(arr, n);
return 0;
}
सॉर्टिंग एल्गोरिदम की तुलना
| एल्गोरिदम | सर्वश्रेष्ठ | औसत | सबसे खराब | स्थान | स्थिर |
|---|---|---|---|---|---|
| बबल सॉर्ट | O(n) | O(n²) | O(n²) | O(1) | हाँ |
| सिलेक्शन सॉर्ट | O(n²) | O(n²) | O(n²) | O(1) | नहीं |
| इन्सर्शन सॉर्ट | O(n) | O(n²) | O(n²) | O(1) | हाँ |
| क्विक सॉर्ट | O(n log n) | O(n log n) | O(n²) | O(log n) | नहीं |
| मर्ज सॉर्ट | O(n log n) | O(n log n) | O(n log n) | O(n) | हाँ |
कब कौन सा उपयोग करें?
- बबल/इन्सर्शन सॉर्ट: छोटी सरणी, लगभग क्रमबद्ध डेटा, सरलता आवश्यक हो।
- क्विक सॉर्ट: सामान्य उद्देश्य, मेमोरी सीमित हो, औसत मामले में तेज।
- मर्ज सॉर्ट: स्थिर सॉर्ट चाहिए, लिंक्ड लिस्ट, बाहरी सॉर्टिंग, गारंटीकृत O(n log n)।