Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- * main.c file
- *
- */
- #include <limits.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include "srt.h"
- #include "srtbubb.c"
- #define RAND
- #define BUBB
- #define PRNT
- static int compare(const void *, const void *);
- int main(int argc, char *argv[]) {
- int nelem = argc == 2 ? atoi(argv[1]) : SHRT_MAX;
- TYPE *a_ptr = calloc(nelem, sizeof(TYPE));
- #ifdef RAND
- for (int i = 0; i < nelem; ++i) {
- a_ptr[i] = (int)rand() / RAND_MAX;
- }
- #else
- for (int i = 0; i < nelem; ++i) {
- a_ptr[i] = i;
- }
- #endif
- #if defined BUBB
- srtbubb(a_ptr, nelem, sizeof(TYPE), compare);
- #elif defined HEAP
- srtheap(a_ptr, nelem, sizeof(TYPE), compare);
- #elif defined INSR
- srtinsr(a_ptr, nelem, sizeof(TYPE), compare);
- #elif defined MERG
- srtmerg(a_ptr, nelem, sizeof(TYPE), compare);
- #else
- qsort(a_ptr, nelem, sizeof(TYPE), compare);
- #endif
- #ifdef PRNT
- for (int i = 0; i < nelem; ++i) {
- printf("%f\n", a_ptr[i]);
- }
- #else
- for (int i = 0; i < nelem - 1; ++i) {
- if (a_ptr[i] > a_ptr[i + 1]) {
- printf("fail\n");
- goto end;
- }
- }
- printf("pass\n");
- #endif
- end:
- free(a_ptr);
- return 0;
- }
- static int compare(const void *p1, const void *p2) {
- if (*(TYPE *)p1 < *(TYPE *)p2) {
- return -5;
- }
- else if (*(TYPE *)p1 > *(TYPE *)p2) {
- return +5;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement