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

मर्ज सॉर्ट का उपयोग करके सरणी को सॉर्ट करने का C प्रोग्राम

एक सरणी संबंधित डेटा आइटम्स का एक समूह है जो एक सामान्य नाम साझा करता है। एक सरणी में एक विशेष मान को इसके "इंडेक्स नंबर" की मदद से पहचाना जाता है।

सरणी डिक्लेयर करना

सरणी डिक्लेयर करने का सिंटैक्स निम्नानुसार है:

datatype array_name[size];

उदाहरण के लिए,

float marks[50]

यह 'marks' को 50 फ्लोट तत्वों वाली सरणी घोषित करता है।

int number[10]

यह 'number' को अधिकतम 10 पूर्णांक कॉन्स्टेंट रखने वाली सरणी घोषित करता है।

प्रत्येक तत्व को "सरणी इंडेक्स" का उपयोग करके पहचाना जाता है।

सरणी इंडेक्स का उपयोग करके सरणी तत्वों तक पहुंचना आसान है।

मर्ज सॉर्ट के लिए उपयोग की जाने वाली तर्क निम्नानुसार है:

void MergeSort(int *array, int left, int right){ 
    int middle = (left + right) / 2; 
    if(left < right){ 
        // Sorting the left part 
        MergeSort(array, left, middle); 
        // Sorting the right part 
        MergeSort(array, middle + 1, right); 
        // Merge the two parts 
        Merge(array, left, middle, right); 
    } 
}

सभी तत्वों को मर्ज करने के लिए तर्क निम्नानुसार है:

void Merge(int *array, int left, int middle, int right){ 
    int tmp[right - left + 1]; 
    int pos = 0, leftposition = left, rightposition = middle + 1; 
    while(leftposition <= middle && rightposition <= right){ 
        if(array[leftposition] < array[rightposition]){ 
            tmp[pos++] = array[leftposition++]; 
        }else{ 
            tmp[pos++] = array[rightposition++]; 
        } 
    } 
    while(leftposition <= middle) 
        tmp[pos++] = array[leftposition++]; 
    while(rightposition <= right) 
        tmp[pos++] = array[rightposition++]; 
    int i; 
    for(i = 0; i < pos; i++){ 
        array[i + left] = tmp[i]; 
    } 
    return; 
}

प्रोग्राम

निम्नलिखिश C प्रोग्राम मर्ज सॉर्ट के लिए है:

#include <stdio.h> 
void Merge(int *, int, int, int); 
void MergeSort(int *array, int left, int right){ 
    int middle = (left + right) / 2; 
    if(left < right){ 
        // Sorting the left part 
        MergeSort(array, left, middle); 
        // Sorting the right part 
        MergeSort(array, middle + 1, right); 
        // Merge the two parts 
        Merge(array, left, middle, right); 
    } 
} 
void Merge(int *array, int left, int middle, int right){ 
    int tmp[right - left + 1]; 
    int pos = 0, leftposition = left, rightposition = middle + 1; 
    while(leftposition <= middle && rightposition <= right){ 
        if(array[leftposition] < array[rightposition]){ 
            tmp[pos++] = array[leftposition++]; 
        }else{ 
            tmp[pos++] = array[rightposition++]; 
        } 
    } 
    while(leftposition <= middle) 
        tmp[pos++] = array[leftposition++]; 
    while(rightposition <= right) 
        tmp[pos++] = array[rightposition++]; 
    int i; 
    for(i = 0; i < pos; i++){ 
        array[i + left] = tmp[i]; 
    } 
    return; 
} 
int main(){ 
    int size; 
    printf("\n enter size of array:"); 
    scanf("%d", &size); 
    int array[size]; 
    int i, j, k; 
    printf("\n enter the elements in an array:"); 
    for(i = 0; i < size; i++){ 
        scanf("%d", &array[i]); 
    } 
    MergeSort(array, 0, size - 1); // calling sort function 
    for(i = 0; i < size; i++){ 
        printf("%d ", array[i]); 
    } 
    printf("\n"); 
    return 0; 
}

आउटपुट

enter size of array: 10 
enter the elements in an array: 2 -10 34 -3 45 67 -89 34 23 67 
-89 -10 -3 2 23 34 34 45 67 67
  1. C प्रोग्राम: सरणी के तत्वों का गुणनफल C प्रोग्राम: सरणी के तत्वों का गुणनफल

    समस्या विवरण एक सरणी arr[n] दी गई है, इसके सभी तत्वों का गुणनफल ज्ञात करें। उदाहरण सरणीगुणनफलगणना {10, 20, 3, 4, 8}1920010×20×3×4×8 {1, 2, 3, 4, 3, 2, 1}1441×2×3×4×3×2×1 {5, 0, 10}0शून्य से गुणनफल = 0 एल्गोरिदम result = 1 आरंभ करें प्रत्येक तत्व के लिए: result *= arr[i] result लौटाएं C प्

  1. C प्रोग्राम: जांचें कि सरणी पैलिंड्रोम है या नहीं (पुनरावृत्तीय) C प्रोग्राम: जांचें कि सरणी पैलिंड्रोम है या नहीं (पुनरावृत्तीय)

    पैलिंड्रोम सरणी एक सरणी पैलिंड्रोम है यदि यह आगे और पीछे से समान पढ़ी जाती है। उदाहरण सरणीपैलिंड्रोम? {1, 0, 0, 1}हाँ {1, 2, 3, 4, 5}नहीं {7}हाँ (एकल तत्व) {}हाँ (खाली) {1, 2, 2, 1}हाँ {1, 2, 3, 2, 1}हाँ पुनरावृत्तीय एल्गोरिदम दो पॉइंटर्स: start = 0, end = n-1 जब तक start < end: यदि ar

  1. मर्ज सॉर्ट का उपयोग करके ऐरे में इनवर्जन गिनने के लिए C/C++ प्रोग्राम? मर्ज सॉर्ट का उपयोग करके ऐरे में इनवर्जन गिनने के लिए C/C++ प्रोग्राम?

    दिए गए ऐरे को क्रमबद्ध करने के लिए होने वाले इनवर्जन की संख्या को इनवर्जन काउंट (inversion count) के रूप में जाना जाता है। इनवर्जन समस्या एक शास्त्रीय समस्या है जिसे मर्ज सॉर्ट एल्गोरिदम का उपयोग करके हल किया जा सकता है। इस समस्या में हम इसके बाईं ओर उससे बड़े सभी एलिमेंट्स को गिनेंगे और काउंट को आ