#include #include void printArray(int * array, int len){ for (int i = 0; i < len; i++){ printf("%d ", array[i]); } puts("\n"); } void swap(int * array, int x, int y){ int tmp = array[x]; array[x] = array[y]; array[y] = tmp; } int partition(int * array, int lo, int hi){ int pivot = array[hi]; int i = lo - 1; for (int j = lo; j <= hi - 1; j++) { if (array[j] <= pivot) { i++; swap(array, i, j); } } swap(array, i+1, hi); return i+1; } void quicksort(int * array, int lo, int hi){ //printArray(array, hi); if (lo < hi) { int p = partition(array, lo, hi); quicksort(array, lo, p-1); quicksort(array, p+1, hi); } } void randArray(int * array, int size){ printf("Creating array of size: %d\n", size); int mod = size * 10; for (int i = 0; i < size; i++){ array[i] = rand() % mod; } } void bubblesort(int * array, int size){ for (int i=0; i < size; i++){ for (int j=i+1; j < size; j++){ if (array[i] > array[j]){ swap(array, i, j); } } } } void selectionsort(int * array, int size){ int min; int minindex; for (int i=0; i < size; i++){ min = array[i]; minindex = i; for (int j=i+1; j < size; j++){ if (min > array[j]){ min = array[j]; minindex = j; } } swap(array, i, minindex); } } int main(int argc, char ** argv){ if (argc != 2) { fprintf(stderr, "Usage: sort size\n"); exit(1); } int size = atoi(argv[1]); if (size < 2) { fprintf(stderr, "size should be greater than 1\n"); exit(1); } int array[size]; // create random array randArray(array, size); printArray(array, size); quicksort(array, 0, size-1); printf("quicksort\n"); printArray(array, size); // create random array randArray(array, size); printArray(array, size); bubblesort(array, size); printf("bubblesort\n"); printArray(array, size); // create random array randArray(array, size); printArray(array, size); selectionsort(array, size); printf("selectionsort\n"); printArray(array, size); }