merge.c
contents ::
  address.c
  atquick_sort.c
  bits.c
  countspace.c
  ctof.c
  hextoint.c
  hist.c
  indexof.c
  itob.c
  linkage.c
  lzw.c
  maxval.c
  merge.c
  merge_sort.c
  peof.c
  pointer.c
  quick2.c
  quick.c
  quick_sort.c
  reverse.c
  rftoc.c
  rmultiblank.c
  rtabs.c
  squeeze.c
  structoo.c
  syscall.c
  tempfunc.c
  tfc.c
  word.c

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <time.h>

extern void amerge(int *, int , int );
extern void merge_sort(int *, int , int );
extern void quicksort(int *, int , int );
extern void aquicksort(int *, int , int );
extern void atquicksort(int *, int, int);
int rand(void);


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(){
  clock_t t1, t2;
  //int length = 20;
  // int length = 1048284; 
  int *a;
  int i, length=0;

  printf("Please input the array size:\n>");
  scanf("%d", &length);
  a = str_malloc(length * sizeof i);
  
  if(length<1048285){
  // merge sort assembler version
  for(i=0; i<length; i++){
    a[i]=rand();
  }
  t1= clock();
  amerge(a,0,length-1);
  t2= clock();
  printf("\nMerge Time Assembler: %ld mseconds\t\tLength: %d\n", (long)(t2-t1)/1000,length);
  //for(i=0; i<length; i++){
  //printf("%d\n",a[i]);
  //}
  // merge sort c version
  for(i=0; i<length; i++){
    a[i]=rand();
  }
  t1= clock();
  merge_sort(a,0,length-1);
  t2= clock();
  printf("\nMerge Time C: %ld mseconds\t\t\tLength: %d\n", (long)(t2-t1)/1000,length);
  //for(i=0; i<length; i++){
  //printf("%d\n",a[i]);
  // }
  }
  // Tail Recursive Quick Sort [Assembler]
  for(i=0; i<length; i++){
    a[i]=rand();
  }

  t1= clock();
  atquicksort(a,0,length-1);
  t2= clock();

  printf("\nAssembler Tail Quick Time: %ld mseconds\t\tLength: %d\n", (long)(t2-t1)/1000,length);
  //   for(i=0; i<length; i++){
  //printf("%d\n",a[i]); 
  //}
  
  // Quick Sort [Assembler]
  for(i=0; i<length; i++){
    a[i]=rand();
  }

  t1= clock();
  aquicksort(a,0,length-1);
  t2= clock();

  printf("\nAssembler Quick Time: %ld mseconds\t\tLength: %d\n", (long)(t2-t1)/1000,length);
  //   for(i=0; i<length; i++){
  //printf("%d\n",a[i]); 
  //}

  //Quick Sort [C]
  for(i=0; i<length; i++){
    a[i]=rand();
  }

  t1= clock();
  quicksort(a,0,length-1);
  t2= clock();

  printf("\nC Quick Time: %ld mseconds\t\t\tLength: %d\n", (long)(t2-t1)/1000,length);
  
  return 0;  
}


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



James Little