132 lines
2.4 KiB
C
132 lines
2.4 KiB
C
// gcc qs.c -o qs && ./qs
|
|
// Basic tests for various quicksorts
|
|
|
|
#include <stdio.h>
|
|
#include "qsort.h"
|
|
#include "zssort.h"
|
|
#include "schwab_sort.h"
|
|
|
|
// function to print array elements
|
|
void printArray(int array[], int size) {
|
|
for (int i = 0; i < size; ++i) {
|
|
printf("%d ", array[i]);
|
|
}
|
|
printf("\n");
|
|
}
|
|
|
|
// qs test function
|
|
void qs() {
|
|
#include "data.inc"
|
|
|
|
int n = sizeof(data) / sizeof(data[0]);
|
|
|
|
printf("(qs) Unsorted Array\n");
|
|
printArray(data, n);
|
|
|
|
// perform quicksort on data
|
|
quicksort(data, 0, n - 1);
|
|
|
|
printf("(qs) Sorted array in ascending order: \n");
|
|
printArray(data, n);
|
|
}
|
|
|
|
// qsr test function
|
|
void qsr() {
|
|
#include "data.inc"
|
|
|
|
int n = sizeof(data) / sizeof(data[0]);
|
|
|
|
// perform quicksort on data
|
|
rpivotstate state;
|
|
quicksort_rand(data, 0, n - 1, &state);
|
|
|
|
printf("(qsr) Sorted array in ascending order: \n");
|
|
printArray(data, n);
|
|
}
|
|
|
|
// zss test function
|
|
void zss() {
|
|
#include "data.inc"
|
|
|
|
int n = sizeof(data) / sizeof(data[0]);
|
|
|
|
// perform zssort on data
|
|
zssort(data, 0, n - 1);
|
|
|
|
printf("(zss) Sorted array in ascending order: \n");
|
|
printArray(data, n);
|
|
}
|
|
|
|
// qs3 test function
|
|
void qs3() {
|
|
#include "data.inc"
|
|
|
|
int n = sizeof(data) / sizeof(data[0]);
|
|
|
|
// memory junnnk is enough
|
|
rpivotstate rand;
|
|
|
|
// perform qs3 on data
|
|
quicksort_rand3(data, 0, n - 1, &rand);
|
|
|
|
printf("(qs3) Sorted array in ascending order: \n");
|
|
printArray(data, n);
|
|
}
|
|
|
|
void qs3_sp() {
|
|
#include "data.inc"
|
|
|
|
int n = sizeof(data) / sizeof(data[0]);
|
|
|
|
// memory junnnk is enough
|
|
rpivotstate rand;
|
|
|
|
// perform qs3 on data
|
|
quicksort_rand3_sp(data, 0, n - 1, &rand);
|
|
|
|
printf("(qs3_sp) Sorted array in ascending order: \n");
|
|
printArray(data, n);
|
|
}
|
|
|
|
void qs3_sp2() {
|
|
#include "data.inc"
|
|
|
|
int n = sizeof(data) / sizeof(data[0]);
|
|
|
|
// memory junnnk is enough
|
|
rpivotstate rand;
|
|
|
|
// perform qs3 on data
|
|
quicksort_rand3_sp2(data, 0, n - 1, &rand);
|
|
|
|
printf("(qs3_sp2) Sorted array in ascending order: \n");
|
|
printArray(data, n);
|
|
}
|
|
|
|
void schwab() {
|
|
#include "data.inc"
|
|
|
|
int n = sizeof(data) / sizeof(data[0]);
|
|
|
|
// memory junnnk is enough
|
|
uint32_t junk;
|
|
sch_rand_state rand = schwab_rand_state(junk);
|
|
|
|
// perform sort on data
|
|
schwab_sort(data, 0, n - 1, &rand);
|
|
|
|
printf("(schwab) Sorted array in ascending order: \n");
|
|
printArray(data, n);
|
|
}
|
|
|
|
int main() {
|
|
qs();
|
|
qsr();
|
|
zss();
|
|
qs3();
|
|
qs3_sp();
|
|
qs3_sp2();
|
|
schwab();
|
|
return 0;
|
|
}
|