কম্পিউটার

সি প্রোগ্রাম মার্জ সর্ট ব্যবহার করে একটি অ্যারে সাজাতে


একটি অ্যারে সম্পর্কিত ডেটা আইটেমগুলির একটি গ্রুপ যা একটি সাধারণ নাম ভাগ করে। একটি অ্যারের একটি নির্দিষ্ট মান তার "সূচক নম্বর" এর সাহায্যে চিহ্নিত করা হয়।

অ্যারে ঘোষণা করা হচ্ছে

একটি অ্যারে ঘোষণা করার জন্য সিনট্যাক্স নিম্নরূপ -

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;
}

প্রোগ্রাম

সাজানোর জন্য 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. অ্যারের পণ্যের জন্য সি প্রোগ্রাম

  2. একটি অ্যারে প্যালিনড্রোম কিনা তা পরীক্ষা করার জন্য সি প্রোগ্রাম

  3. সি/সি++ প্রোগ্রাম মার্জ সর্ট ব্যবহার করে একটি অ্যারের মধ্যে বিপরীতমুখী গণনা করতে?

  4. পয়েন্টার ব্যবহার করে একটি অ্যারের উপাদান অ্যাক্সেস করার জন্য C++ প্রোগ্রাম