c语言获得快速排序时partition的位置源代码
时间: 2024-10-21 07:01:33 浏览: 14
在C语言中,快速排序(Quick Sort)是一个常见的高效排序算法,其关键步骤之一是Partition操作,它会将数组划分为两部分,使得左边的元素都小于或等于基准值,右边的元素都大于基准值。这里提供了一个简单的快速排序分区函数(选择最后一个元素作为基准)的部分源代码:
```c
#include <stdio.h>
// 定义Partition函数
int partition(int arr[], int low, int high) {
// 基准值
int pivot = arr[high];
int i = (low - 1); // Index of smaller element
for (int j = low; j <= high - 1; j++) {
// 如果当前元素小于或等于基准
if (arr[j] <= pivot) {
i++; // increment index of smaller element
// 交换元素
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 将基准放到正确的位置
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1; // 返回基准的新位置
}
// 主函数展示如何使用
void quickSort(int arr[], int low, int high) {
if (low < high) {
// Partition the array and get the position of pivot
int pi = partition(arr, low, high);
// Recursively sort elements before and after pivot
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
```
在这个示例中,`partition`函数是整个快速排序的核心部分,返回的是基准元素在分区后的最终位置。`quickSort`则是递归地对分割出的两个区域进行同样的操作。
阅读全文