Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Header file where the generic magic happens
- // Must run g++ -E to see what's happening
- #include <time.h>
- #define TOKEN(x, y) x ## y
- #define QUICK_SORT(T) TOKEN(quick_sort_, T)
- #define PARTITION(T) TOKEN(partition_, T)
- #define PRINT_ARR(T) TOKEN(print_arr_, T)
- #define CHOOSE(T) TOKEN(choose_type_, T)
- int PARTITION (TYPE) (TYPE * nums, int lo, int hi){
- TYPE pivot = nums[hi];
- int i = lo; //Place for swapping
- int j;
- for (j = lo; j < hi; ++j){
- if (nums[j] <= pivot){
- TYPE temp = nums[i];
- nums[i] = nums[j];
- nums[j] = temp;
- i = i + 1;
- }
- }
- TYPE temp = nums[i];
- nums[i] = nums[hi];
- nums[hi] = temp;
- return i;
- }
- TYPE* QUICK_SORT (TYPE) (TYPE * nums, int lo, int hi){
- if (lo < hi){
- int p = PARTITION (TYPE) (nums, lo, hi);
- QUICK_SORT (TYPE) (nums, lo, p - 1);
- QUICK_SORT (TYPE) (nums, p + 1, hi);
- }
- }
- void PRINT_ARR (TYPE) (TYPE * nums, int size, int type){
- for (int i = 0; i < size; i++){
- PRINT ;
- }
- printf("%s", "\n");
- }
- void CHOOSE (TYPE) (int argc, char** argv, int type){
- // Creates character array with 255 bytes
- char buff[255];
- char *end;
- // Makes argv[2] lowercase
- int size = strtol(argv[3], &end, 10);
- TYPE nums[size];
- // Declare and try to open file by name
- FILE *f;
- f = fopen(argv[1], "r");
- int first = 0;
- // Error block
- if (f==NULL) perror("Error opening file");
- else {
- while (!feof(f)) {
- //Doesn't print empty buff
- if (first != 0){
- nums[first-1] = READ ;
- }
- fscanf(f, "%s", buff);
- first = first + 1;
- }
- }
- //PRINT_ARR (TYPE) (nums, size, type);
- time_t tstart, tend;
- tstart = clock();
- QUICK_SORT (TYPE) (nums, 0, size-1);
- tend=clock();
- long t = (tend-tstart); // CLOCKS_PER_SEC;
- long C = CLOCKS_PER_SEC;
- printf("%Ld\n", t);
- printf("CLOCKS_PER_SEC: %Ld\n", C);
- //PRINT_ARR (TYPE) (nums, size, type);
- }
Advertisement
Add Comment
Please, Sign In to add comment