Crazy

Napredno sortiranje

Dec 5th, 2016
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.17 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4.  
  5. void Merge(int *A,int *L,int leftCount,int *R,int rightCount) {
  6.     int i,j,k;
  7.  
  8.  
  9.     i = 0; j = 0; k =0;
  10.  
  11.     while(i<leftCount&&j< rightCount) {
  12.         if(L[i]  < R[j]) A[k++] = L[i++];
  13.         else A[k++] = R[j++];
  14.     }
  15.     while(i < leftCount) A[k++] = L[i++];
  16.     while(j < rightCount) A[k++] = R[j++];
  17. }
  18.  
  19.  
  20. void MergeSort(int *A,int n) {
  21.     int mid,i, *L, *R;
  22.     if(n < 2) return;
  23.  
  24.     mid = n/2;
  25.  
  26.  
  27.     L = (int*)malloc(mid*sizeof(int));
  28.     R = (int*)malloc((n- mid)*sizeof(int));
  29.  
  30.     for(i = 0;i<mid;i++) L[i] = A[i];
  31.     for(i = mid;i<n;i++) R[i-mid] = A[i];
  32.  
  33.     MergeSort(L,mid);
  34.     MergeSort(R,n-mid);
  35.     Merge(A,L,mid,R,n-mid);
  36.         free(L);
  37.         free(R);
  38. }
  39.  
  40.  
  41.     int main() {
  42.     int n, i;
  43.     scanf("%d", &n);
  44.     int *a = malloc(sizeof(int) * n);
  45.     srand(time(NULL));
  46.     for(i = 0; i < n; ++i) {
  47.         a[i] = rand() % 10000;
  48.     }
  49.  
  50.  
  51.    MergeSort(a, n);
  52.  
  53.  
  54.     int sorted = 1;
  55.     for(i = 0; i < n - 1; ++i) {
  56.         if(a[i] > a[i + 1]) {
  57.             sorted = 0;
  58.             break;
  59.         }
  60.     }
  61.     if(!sorted) {
  62.         printf("NOT SORTED");
  63.     } else {
  64.         printf("SORTED");
  65.     }
  66.     free(a);
  67.     return 0;
  68. }
Add Comment
Please, Sign In to add comment