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


void merge_sort(int *newa, int *a, int n){
  if(n>0){
    int i;
    int q=(n)/2;
    merge_sort(newa, a, q);
    merge_sort(newa, a+q+1, n-q-1);

    /*    merge(a, p, q, r);  */

    if(q==0){
         if(*a>*(a+1)){
           int i;
           i=*(a+1);
           *(a+1)=*a;
           *a=i;
         }
      }else {
         int i;
         /*  int length = r-p+1; */
         int s = 0;
         int j = q+1;
         for(i=0;s<q+1;i++){
           if( j>n || a[s] <= a[j]) {
             newa[i]=a[s++];
           }else  if(a[s] >a[j]) {
             newa[i]=a[j++];
           }
           
         }
         while(j<=n){
           newa[i++]=a[j++];
         }
         for(i=0,s=0;i<=n;i++,s++){
           a[s]=newa[i];
         }
      }

  }
  
}

James Little