#include void quicksort(int arr[], int low, int high) { if (low < high) { int pivot = arr[low]; // 选择基准元素 int left = low + 1; int right = high; while (left <= right) { // 从左侧查找大于基准的元素 while (left <= high && arr[left] <= pivot) { left++; } // 从右侧查找小于基准的元素 while (right >= low && arr[right] > pivot) { right--; } // 如果找到需要交换的元素 if (left < right) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } } // 将基准元素放到合适的位置 arr[low] = arr[right]; arr[right] = pivot; // 递归排序基准元素左侧和右侧的子数组 quicksort(arr, low, right - 1); quicksort(arr, right + 1, high); } } void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int arr[] = {10, 7, 8, 9, 1, 5}; int n = sizeof(arr) / sizeof(arr[0]); printf("原始数组: \n"); printArray(arr, n); quicksort(arr, 0, n - 1); printf("排序后的数组: \n"); printArray(arr, n); return 0; }