#include #include void swap(int* intArray, int num1, int num2) { int temp = intArray[num1]; intArray[num1] = intArray[num2]; intArray[num2] = temp; } int partition(int* intArray, int left, int right, int pivot) { int leftPointer = left - 1; int rightPointer = right; while (true) { while (intArray[++leftPointer] < pivot) { //do nothing } while (rightPointer > 0 && intArray[--rightPointer] > pivot) { //do nothing } if (leftPointer >= rightPointer) { break; } else { swap(intArray, leftPointer, rightPointer); } } swap(intArray, leftPointer, right); return leftPointer; } void quicksort(int* array, int left, int right) { if (right - left <= 0) { return; } else { int pivot = array[right]; int partitionPoint = partition(array, left, right, pivot); quicksort(array, left, partitionPoint - 1); quicksort(array, partitionPoint + 1, right); } }