vip% cat sort_lib.c /* sort_lib.c: test C library sort routine */ #include #include #include #define M 100000 /* size of array to sort */ void inita(double a[]); int cmp(double *, double *); void check_sorted(double a[]); void main(void) { double a[M]; int starttime, stoptime; /* elapsed time */ int startclock, stopclock; /* CPU time */ srand48((long)time(NULL)); inita(a); starttime = time(NULL); startclock = clock(); qsort(a, M, sizeof(double), cmp); stoptime = time(NULL); stopclock = clock(); check_sorted(a); printf("Elapsed time for sort: %ld seconds\n", stoptime - starttime); printf("CPU time: %.3f seconds\n", (double)(stopclock - startclock)/1000000.0); exit(0); } /* inita: initialize array a to random #s */ void inita(double a[]) { int i; for (i = 0; i < M; i++) a[i] = drand48(); } /* cmp: comparison, using pointers, used in qsort */ int cmp(double *x, double *y) { if (*x < *y) return -1; else if (*x > *y) return 1; else return 0; } /* check_sorted: check if sorted */ void check_sorted(double a[]) { int sorted = 1; int i; for (i = 0; i < M-1; i++) if (a[i] > a[i+1]) sorted = 0; if(sorted) printf("Array sorted, %d items\n", M); else printf("*** Array NOT sorted\n"); } vip% cc -o sort_lib sort_lib.c "sort_lib.c", line 18: warning: argument #4 is incompatible with prototype: prototype: pointer to function(pointer to const void, pointer to const void) returning int : "/usr/include/stdlib.h", line 96 argument : pointer to function(pointer to double, pointer to double) returning int vip% sort_lib Array sorted, 100000 items Elapsed time for sort: 2 seconds CPU time: 1.570 seconds vip% sort_lib Array sorted, 1000000 items Elapsed time for sort: 22 seconds CPU time: 18.880 seconds