int Partition(int* array, int low, int high) {
int pivot = array[low];
while (low < high) {
while (low < high && array[high] >= pivot) {
--high;
}
array[low] = array[high];
while (low < high && array[low] <= pivot) {
++low;
}
array[high] = array[low];
}
array[low] = pivot;
return low;
}
void qsort(int* array, int low, int high) {
if (low < high) {
int pivot_position = Partition(array, low, high);
qsort(array, low, pivot_position - 1);
qsort(array, pivot_position + 1, high);
}
}
int _tmain(int argc, _TCHAR* argv[]) {
int arr[] = { 1, 5, 3, 1, 4 };
qsort(arr, 0, 4);
return 0;
}