Advertisement
patryk

Untitled

Mar 18th, 2014
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.67 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<time.h>
  4.  
  5. int i, j, k, l, t, h, m, p, q, r, N, gora;
  6. void mergesort(int a[]){
  7.     gora = 1; //true
  8.     p = 1;
  9.     do{
  10.         h = 1;
  11.         m = N;
  12.         if(gora==1){
  13.             i = 1;
  14.             j = N;
  15.             k = N+1;
  16.             l = 2*N;
  17.         }else{
  18.             k = 1;
  19.             l = N;
  20.             i = N+1;
  21.             j = 2*N;
  22.         }
  23.         do{
  24.             if(m>=p) q = p; else q = m;
  25.             m = m-q;
  26.             if(m>=p) r = p; else r = m;
  27.             m = m-r;
  28.             while(q!=0 && r!=0){
  29.                 if(a[i] < a[j]){
  30.                     a[k] = a[i];
  31.                     k = k+h;
  32.                     i = i+1;
  33.                     q = q-1;
  34.                 }else{
  35.                     a[k] = a[j];
  36.                     k = k+h;
  37.                     j = j-1;
  38.                     r = r-1;
  39.                 }
  40.             }
  41.             while(r!=0){
  42.                 a[k] = a[j];
  43.                 k = k+h;
  44.                 j = j-1;
  45.                 r = r-1;
  46.             }
  47.             while(q!=0){
  48.                 a[k] = a[i];
  49.                 k = k+h;
  50.                 i = i+1;
  51.                 q = q-1;
  52.             }
  53.             h = -h;
  54.             t = k;
  55.             k = l;
  56.             l = t;
  57.         }while(m!=0);
  58.         if(gora==1) gora = 0;
  59.         if(gora==0) gora = 1;
  60.         p = 2*p;
  61.     }while(p<N);
  62.     if(gora == 0) for(i=0; i<N; i++) a[i] = a[i+N];
  63. }
  64.  
  65. int main(){
  66.     N=1000;
  67.     int a[2*N];
  68.  
  69.     srand(time(NULL));
  70.     for(i=0; i<N; i++) a[i] = rand();
  71.  
  72.     mergesort(a);
  73.  
  74.     for(i=0; i<N; i++) printf("[%d]: %d\t", i, a[i]);
  75.     getch();
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement