Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C में qsort() और C++ में sort() की तुलना


C की qsort और C++ की std::sort दोनों सॉर्टिंग फंक्शन्स हैं, लेकिन डिज़ाइन, प्रदर्शन और सुरक्षा में महत्वपूर्ण अंतर हैं।

फंक्शन सिग्नेचर्स

// C qsort
void qsort(void *base, size_t num, size_t size,
           int (*compar)(const void*, const void*));

// C++ std::sort
template <class RandomIt, class Compare>
void sort(RandomIt first, RandomIt last, Compare comp);

विस्तृत तुलना

पहलूC qsort()C++ std::sort()
एल्गोरिदमक्विकसॉर्ट (आमतौर पर)इंट्रोसॉर्ट (हाइब्रिड: क्विकसॉर्ट + हीपसॉर्ट + इंसर्शन सॉर्ट)
वर्स्ट-केस कॉम्प्लेक्सिटीO(n²) - मानक द्वारा गारंटी नहींO(n log n) - C++11 से गारंटीड
रनटाइम प्रदर्शनधीमा (वॉयड पॉइंटर, फंक्शन कॉल ओवरहेड)तेज (इनलाइनिंग, टेम्पलेट ऑप्टिमाइज़ेशन)
टाइप सेफ्टीकम (void* कास्टिंग)उच्च (टेम्पलेट्स, कंपाइल-टाइम चेक)
फ्लेक्सिबिलिटीकेवल सन्निहित ऐरेऐरे, वेक्टर, डीक, कोई भी रैंडम-एक्सेस रेंज
कम्पेरेटरफंक्शन पॉइंटरकोई भी कॉल करने योग्य (फंक्टर, लैम्ब्डा, फंक्शन पॉइंटर)
स्टेबिलिटीनहींनहीं (stable_sort उपयोग करें)

उदाहरण: qsort

#include <stdlib.h>
#include <stdio.h>

int cmp_int(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

int main() {
    int arr[] = {5, 2, 8, 1, 9};
    qsort(arr, 5, sizeof(int), cmp_int);
    for (int i = 0; i < 5; i++) printf("%d ", arr[i]);
    return 0;
}

उदाहरण: std::sort

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> v = {5, 2, 8, 1, 9};
    std::sort(v.begin(), v.end(), [](int a, int b) { return a < b; });
    for (int x : v) std::cout << x << ' ';
    return 0;
}

निष्कर्ष

C++ कोड में हमेशा std::sort प्राथमिकता दें। C कोड में qsort एकमात्र मानक विकल्प है।

  1. - C++ में 3-वे मर्ज सॉर्ट

    मर्ज सॉर्ट में सरणी को पुनरावर्ती रूप से 2 भागों में विभाजित करना, सॉर्ट करना और अंत में उन्हें मर्ज करना शामिल है। मर्ज सॉर्ट का एक प्रकार 3-वे मर्ज सॉर्ट है जहां सरणी को 2 भागों के बजाय 3 भागों में विभाजित किया जाता है।मर्ज सॉर्ट सरणियों को पुनरावर्ती तरीके से आधे आकार के सबएरे में तोड़ता है। उसी

  1. - C++ में बाइनरी इंसर्शन सॉर्ट

    बाइनरी इंसर्शन सॉर्ट इंसर्शन सॉर्ट का एक विशेष प्रकार है जो ऐरे में डाले गए एलिमेंट की सही स्थिति खोजने के लिए बाइनरी सर्च एल्गोरिदम का उपयोग करता है। इंसर्शन सॉर्ट एक सॉर्टिंग तकनीक है जो ऐरे में एलिमेंट की सही स्थिति ढूंढकर और फिर उसे उसकी सही स्थिति में डालकर काम करती है। बाइनरी सर्च एक खोज तकनीक

  1. - C++ में स्ट्रैंड सॉर्ट

    इस सेक्शन में हम देखेंगे कि C++ के स्टैंडर्ड लाइब्रेरी का उपयोग करके किसी ऐरे या लिंक्ड लिस्ट को कैसे सॉर्ट कर सकते हैं। C++ में विभिन्न उद्देश्यों के लिए कई अलग-अलग लाइब्रेरीज हैं। सॉर्टिंग उनमें से एक है। C++ फ़ंक्शन std::list::sort() लिस्ट के एलिमेंट्स को आरोही क्रम में सॉर्ट करता है। समान एलिमे