merge.c
contents ::
  merge.c
  merge_modified.c
  merge_proc.c
  merge_sort.c
  merge_sort_s.s

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <time.h>
extern void merge_proc(int *newa, int *a, int n);
int rand(void);
#define length 10000


void *str_malloc(size_t s){
  void *result = malloc(s);
  if(NULL == result){
    fprintf(stderr, "Memory allocation failed\n");
    exit(EXIT_FAILURE);
  }
  return result;
}

main(int argc, char **argv){
  clock_t t1, t2;
  int *a;
  int *newa;
  int i=0; 

  a = str_malloc(length * sizeof i);
  newa = str_malloc(length * sizeof i);

  while(1 == scanf("%d", &a[i]) && i < length){
    i++;
  }

  t1= clock(); 
  merge_sort(newa,a,i-1); 
  t2= clock(); 
  fprintf(stderr,"%d\t%f\n",i,(t2-t1)/(double)CLOCKS_PER_SEC);
/*    for(i=0; i<length; i++){ */
/*      printf("%d\n",a[i]); */
/*    } */

  return EXIT_SUCCESS;  
}


int rand(){ 
  static int rand_seed=10;
  rand_seed = rand_seed *1103515245+12345;    
  return (unsigned int)(rand_seed / 65536) % 100;  



James Little