एक सरणी संबंधित डेटा आइटम का एक समूह है जो एक सामान्य नाम साझा करता है। किसी सरणी में किसी विशेष मान की पहचान उसके "इंडेक्स नंबर" की सहायता से की जाती है।
सरणी घोषित करना
एक सरणी घोषित करने के लिए वाक्य रचना इस प्रकार है -
datatype array_name [size];
उदाहरण के लिए,
float marks [50]
यह 50 फ्लोट तत्वों वाली एक सरणी के रूप में 'चिह्न' घोषित करता है।
int number[10]
यह 'संख्या' को एक सरणी के रूप में घोषित करता है जिसमें अधिकतम 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; }
कार्यक्रम
सॉर्ट मर्ज करने के लिए सी प्रोग्राम निम्नलिखित है -
#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