コード例 #1
0
void mergesortBU (int a[], int num) {
	int sz = 1, lo;

	for (sz = 1; sz < num; sz *= 2) {
		printf("size is %d: \n", sz);
		for (lo = 0; lo < num - sz; lo += sz * 2) {
			printf("cursor is %d\n", lo);
			mergeBU(a, lo, lo+sz-1, MIN(lo+sz*2-1, num-1));
		}
	}
	printf("This is bottom-up merge sort.\n");
}
コード例 #2
0
int main(int argc,char** argv){

  if(argc<2){
    fprintf(stderr,"please input ragne_num");
    return -1;
  }
  int list_range = atoi(argv[1]);
  int *a = malloc(list_range*sizeof(int));
  for(int i=0;i<list_range;i++){
    a[i] = 10000*(1.0*rand()/RAND_MAX);
  }

  //  mymergesort(a,0,list_range-1);
  mergeBU(a,0,list_range-1);
  for(int i=0;i<list_range;i++){
    printf("%d ",a[i]);
  }
  printf("mergesort\n");
  return 0;
}
int main(int argc, char *argv[]) 
{
  int N, i;
  itemType *a;

  srand(time(NULL));
  if (argc != 2)
    printf("Missing argument. Enter a power of 2 number!");
  else
    {
      N = atoi(argv[1]);
      a = malloc(N * sizeof(itemType));
      for (i = 0; i < N; i++)
	a[i] = rand() % 1000;
      printf("Before: ");
      print_list(N, a);
      mergeBU(a, 0, N-1);
      printf("After: ");
      print_list(N, a);	
    }
  
  return 0;
}