इस सेक्शन में हम देखेंगे कि C++ में सॉर्टिंग एल्गोरिदम कैसे निष्पादित करें। एक सॉर्टेड ऐरे एक ऐरे है जिसमें प्रत्येक एलिमेंट किसी क्रम में सॉर्टेड होते हैं जैसे न्यूमेरिकल, अल्फाबेटिकल आदि। एक न्यूमेरिकल ऐरे को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज सॉर्ट, क्विक सॉर्ट, हीप सॉर्ट आदि। सिलेक्शन सॉर्ट का उपयोग करके ऐरे को सॉर्ट करने के बारे में अधिक विवरण नीचे दिए गए हैं।
सिलेक्शन सॉर्ट एक सॉर्टिंग मेथड है जो एक सॉर्टेड ऐरे देता है। यह अनसॉर्टेड भाग की शुरुआत में एलिमेंट के साथ ऐरे में सबसे छोटे एलिमेंट को बार-बार ढूंढकर और इंटरचेंज करके ऐसा करता है।
सिलेक्शन सॉर्ट का उपयोग करके सॉर्टेड ऐरे लागू करने वाला एक प्रोग्राम निम्नलिखित है।
उदाहरण: सिलेक्शन सॉर्ट
#include <iostream>
using namespace std;
void selectionSort(int a[], int n) {
int i, j, min, temp;
for (i = 0; i < n - 1; i++) {
min = i;
for (j = i + 1; j < n; j++)
if (a[j] < a[min])
min = j;
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
int main() {
int a[] = { 22, 91, 35, 78, 10, 8, 75, 99, 1, 67 };
int n = sizeof(a) / sizeof(a[0]);
int i;
cout << "दिया गया ऐरे है:" << endl;
for (i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;
selectionSort(a, n);
cout << "\nसॉर्टेड ऐरे है: \n";
for (i = 0; i < n; i++)
cout << a[i] << " ";
return 0;
}
आउटपुट
दिया गया ऐरे है:
22 91 35 78 10 8 75 99 1 67
सॉर्टेड ऐरे है:
1 8 10 22 35 67 75 78 91 99
सिलेक्शन सॉर्ट व्याख्या
void selectionSort(int a[], int n) {
int i, j, min, temp;
for (i = 0; i < n - 1; i++) {
min = i;
for (j = i + 1; j < n; j++)
if (a[j] < a[min])
min = j;
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
main() फ़ंक्शन में, ऐरे a[] परिभाषित किया गया है। फिर फ़ंक्शन selectionSort() को ऐरे a[] और इसके साइज़ n के साथ कॉल किया जाता है। अंत में, सॉर्टेड ऐरे प्रदर्शित किया जाता है।
C++ स्टैंडर्ड लाइब्रेरी सॉर्टिंग
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector v = {22, 91, 35, 78, 10, 8, 75, 99, 1, 67};
// डिफ़ॉल्ट: आरोही (std::sort - इंट्रोसॉर्ट)
sort(v.begin(), v.end());
// डिसेंडिंग
sort(v.begin(), v.end(), greater());
// कस्टम कम्पेरेटर
sort(v.begin(), v.end(), [](int a, int b) { return a > b; });
// स्थिर सॉर्ट (समान एलिमेंट्स का क्रम बनाए रखता है)
stable_sort(v.begin(), v.end());
// आंशिक सॉर्ट (पहले k एलिमेंट्स)
partial_sort(v.begin(), v.begin() + 3, v.end());
// nth एलिमेंट (क्विकसेलेक्ट)
nth_element(v.begin(), v.begin() + v.size()/2, v.end());
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 log n) | O(n) | हां |
| क्विक सॉर्ट | 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(1) | नहीं |
| std::sort | O(n log n) | O(n log n) | O(n log n) | O(log n) | नहीं |
कब क्या उपयोग करें?
- std::sort - सामान्य उद्देश्य, सबसे तेज़ औसत केस
- std::stable_sort - जब समान एलिमेंट्स का क्रम मायने रखता है
- std::partial_sort - जब केवल शीर्ष k एलिमेंट्स चाहिए
- std::nth_element - जब केवल nth एलिमेंट चाहिए (मेडियन)
- इन्सर्शन सॉर्ट - छोटे ऐरे या लगभग सॉर्टेड डेटा के लिए