Skip to content

Instantly share code, notes, and snippets.

@dcolish
Created April 14, 2012 17:32
Show Gist options
  • Save dcolish/2386123 to your computer and use it in GitHub Desktop.
Save dcolish/2386123 to your computer and use it in GitHub Desktop.
/* Takes a list of int args to sort */
#include <stdio.h>
void swap(int array[], int n, int m) {
int tmp = 0;
tmp = array[n];
array[n] = array[m];
array[m] = tmp;
}
int partition(int array[], int l, int r, int p) {
int tmp = 0, store_index = 0, i = 0;
int pval = array[p];
swap(array, r, p);
store_index = l;
for(i = l; i < r; i++) {
if (array[i] < pval) {
swap(array, i, store_index);
store_index++;
}
}
swap(array, r, store_index);
return store_index;
}
void _quicksort(int array[], int l, int r){
int p = 0;
if (l < r) {
p = l + 1;
p = partition(array, l, r, p);
_quicksort(array, l, p - 1);
_quicksort(array, p + 1, r);
}
}
void quicksort(int array[], int len) {
_quicksort(array, 0, len);
}
void print_array(int array[], int len) {
int i = 0;
printf("[");
for (i = 0; i < len; i++) {
printf("%d, ", array[i]);
}
printf("]\n");
}
int main(int argc, char** argv) {
if (argc <= 1) {
return 1;
}
int array[argc - 1];
int len = sizeof(array) / sizeof(int);
int i = 0;
for (i; i < len; i++) {
array[i] = atoi(argv[i + 1]);
}
print_array(array, len);
quicksort(array, len);
print_array(array, len);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment