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"); }
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; }