c 语言中的快速排序
时间: 2024-09-24 19:12:44 浏览: 50
C语言中的快速排序是一种高效的排序算法,它采用了分而治之的思想。基本步骤如下:
1. **选择基准元素**:通常选择数组的第一个元素作为基准(pivot),也可以随机选取。
2. **分区操作**:将数组分为两部分,一部分的所有元素都小于基准,另一部分所有元素都大于或等于基准。这个过程称为partition操作,通过一趟遍历完成。
3. **递归划分**:对分割后的两个子数组分别进行快速排序,直到每个子数组只剩下一个元素或者为空,递归结束。
4. **合并结果**:当所有递归调用返回时,整个数组就按照升序排列好了。
以下是简单的快速排序伪代码实现:
```c
void quicksort(int arr[], int low, int high) {
if (low < high) {
// 找到基准的正确位置
int pivot_index = partition(arr, low, high);
// 对左右两侧再进行排序
quicksort(arr, low, pivot_index - 1);
quicksort(arr, pivot_index + 1, high);
}
}
int partition(int arr[], int low, int high) {
int pivot = arr[high]; // 最后一个元素做基准
int i = (low - 1); // 小于基准的元素索引
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
// 交换 arr[i] 和 arr[j]
swap(&arr[i], &arr[j]);
}
}
// 将基准元素放在正确的位置上
swap(&arr[i + 1], &arr[high]);
return i + 1;
}
```
阅读全文