#include <stdio.h>
int findPivotPos(int arr[], int arrStart, int arrEnd) {
return arrStart;
}
int partition(int arr[], int arrStart, int arrEnd, int pivotPos) {
int pivotValue = arr[pivotPos];
arr[pivotPos] = arr[arrEnd - 1];
int ItPivotValueCount = 0;
for (int i = arrStart; i < arrEnd - 1; i++) {
if (arr[i] < pivotValue) {
int temp = arr[arrStart + ItPivotValueCount];
arr[arrStart + ItPivotValueCount] = arr[i];
arr[i] = temp;
++ItPivotValueCount;
}
}
arr[arrEnd - 1] = arr[arrStart + ItPivotValueCount];
arr[arrStart + ItPivotValueCount] = pivotValue;
return arrStart + ItPivotValueCount;
}
void QuickSort(int arr[], int arrStart, int arrEnd) {
if (arrEnd - arrStart <= 1) {
return;
}
int pivotPos = findPivotPos(arr, arrStart, arrEnd);
int pivotOrderedPos = partition(arr, arrStart, arrEnd, pivotPos);
QuickSort(arr, arrStart, pivotOrderedPos);
QuickSort(arr, pivotOrderedPos+1, arrEnd);
}
int main() {
int arr[] = {3,44,38,5,47,15,36,27,2,46,4,19,50,48};
int arrEnd = sizeof(arr)/sizeof(arr[0]);
printf("数组arr:");
for (int i = 0; i < arrEnd; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
QuickSort(arr, 0, arrEnd);
printf("快速排序后:");
for (int i = 0; i < arrEnd; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
int arr1[] = {20,23,11,14,21,26,2,0};
int arrEnd1 = sizeof(arr1)/sizeof(arr1[0]);
printf("数组arr1:");
for (int i = 0; i < arrEnd1; ++i) {
printf("%d ", arr1[i]);
}
printf("\n");
QuickSort(arr1,0,arrEnd1);
printf("快速排序后:");
for (int i = 0; i < arrEnd1; ++i) {
printf("%d ", arr1[i]);
}
return 0;
}