void quick_sort_int(int *array, int p, int r) { int q; if (p < r) { q = partition(array, p, r); quick_sort_int(array, p, q - 1); quick_sort_int(array, q + 1, r); } }
void qs(int* array, int size) { if ((array == NULL) || (size <= 0)) { printf("Invalid input parameters. Exiting.\n"); } quick_sort_int(array, 0, size - 1); return; }
void quick_sort_int ( unsigned int * length_array, int low, int high ) { int i, j; unsigned int pivot; if ( low < high ) { pivot = length_array[low]; i = low; j = high; while ( i < j ) { while ( i < j && length_array[j] >= pivot ) { j--; } if ( i < j ) { length_array[i++] = length_array[j]; } while ( i < j && length_array[i] <= pivot ) { i++; } if ( i < j ) { length_array[j--] = length_array[i]; } } length_array[i] = pivot; quick_sort_int ( length_array, low, i - 1 ); quick_sort_int ( length_array, i + 1, high ); } }
void quick_sort_int(int *a, int n) { if (n < 2) { return; } int p = a[n / 2]; int *l = a; int *r = a + n - 1; while (l <= r) { if (*l < p) { l++; continue; } if (*r > p) { r--; continue; } int t = *l; *l++ = *r; *r-- = t; } quick_sort_int(a, r - a + 1); quick_sort_int(l, a + n - l); }