All pastes #61141 Raw Edit

Stuff

public text v1 · immutable
#61141 ·published 2006-06-02 19:17 UTC
rendered paste body
#include <stdio.h>
#include <malloc.h>

#define n_mas 5

int sort(int *x,int n)
{
    int i=0, j=0; int tmp;
    for (i=0; i < n-1; i++)
      for (j=i+1; j< n; j++)
         if (x[j] > x[i])
            {
                  tmp = x[i];
                  x[i] = x[j];
                  x[j] = tmp;
            }
   return 0;
}

int * merge_sort(int *v, int n1, int *p, int n2)
{
    int k=0;
    int *ptr = (int *) malloc((n1+n2) * sizeof(int));
    int i=0, j=0;

     for (k=0; k < (n1 + n2); k++)
      {
          if (i >= n1) {ptr[k] = p[j]; j++;}
          else if (j >= n2) {ptr[k] = v[i]; i++;}
          else
          if (v[i] > p[j]) {ptr[k] = v[i]; i++;}
                      else {ptr[k] = p[j]; j++;}
          
      }
    return ptr; 
}

int copy_mas(int *v, int *p, int s, int k)
  {
     int i=0;
     for (i=0; i < k; i++)
        p[i] = v[i+s];
     return 0 ;
  }
int main()
{
  int m[n_mas]={5,2,1,8,3};
  int j = n_mas / 2;
  int *ptr1, *ptr2;
  ptr1 = (int *) malloc ( j * sizeof(int));
  ptr2 = (int *) malloc ( (n_mas - j) * sizeof(int));
  int *p;
  copy_mas(m,ptr1,0, j); copy_mas(m,ptr2,j,n_mas-1);
  sort(ptr1, j); sort(ptr2, n_mas-j);
  p = merge_sort(ptr1,j,ptr2,n_mas-j);
  int i=0;
  for (i=0; i < n_mas; i++)
     printf("%d", p[i]);
  free(ptr1); free(ptr2);      
  getchar();
  return 0 ;
}