FUnneR

Merge Sort

Nov 27th, 2015
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.42 KB | None | 0 0
  1. // MERGE SORT
  2.  
  3. #include<stdlib.h>
  4. #include<stdio.h>
  5.  
  6. void merge(int arr[], int l, int m, int r);
  7. void mergeSort(int arr[], int l, int r);
  8. void printArray(int A[], int size);
  9.  
  10. int main(){
  11.  
  12.     srand(5);
  13.     int arr[1000000],i;
  14.     int arr_size = sizeof(arr)/sizeof(arr[0]);
  15.    
  16.     for(i=0;i<1000000;i++){
  17.         arr[i] = rand() % 100000;
  18.     }
  19.    
  20.     mergeSort(arr, 0, arr_size - 1);
  21.     //printArray(arr, arr_size);//mozete ispisati niz
  22.     return 0;
  23.  
  24. }
  25.  
  26. void merge(int arr[], int l, int m, int r){
  27.  
  28.     int i, j, k;
  29.     int n1 = m - l + 1;
  30.     int n2 =  r - m;
  31.     int L[n1], R[n2];
  32.  
  33.     for(i = 0; i < n1; i++)
  34.         L[i] = arr[l + i];
  35.     for(j = 0; j < n2; j++)
  36.         R[j] = arr[m + 1+ j];
  37.  
  38.     i = 0;
  39.     j = 0;
  40.     k = l;
  41.     while (i < n1 && j < n2){
  42.         if (L[i] <= R[j]){
  43.             arr[k] = L[i];
  44.             i++;
  45.         }
  46.         else{
  47.             arr[k] = R[j];
  48.             j++;
  49.         }
  50.         k++;
  51.     }
  52.  
  53.     while (i < n1){
  54.         arr[k] = L[i];
  55.         i++;
  56.         k++;
  57.     }
  58.  
  59.     while (j < n2){
  60.         arr[k] = R[j];
  61.         j++;
  62.         k++;
  63.     }
  64.  
  65. }
  66.  
  67. void mergeSort(int arr[], int l, int r){
  68.  
  69.     if (l < r){
  70.         int m = l+(r-l)/2;
  71.         mergeSort(arr, l, m);
  72.         mergeSort(arr, m+1, r);
  73.         merge(arr, l, m, r);
  74.     }
  75.  
  76. }
  77.  
  78. void printArray(int A[], int size){
  79.  
  80.     int i;
  81.     for (i=0; i < size; i++)
  82.         printf("%d\n", A[i]);
  83.  
  84. }
Advertisement
Add Comment
Please, Sign In to add comment