请问C语言的快速排序如何实现,请举例说明
时间: 2023-05-20 11:05:14 浏览: 85
结点类型定义如下-数据结构c语言版严蔚敏PPT
C语言的快速排序可以通过递归实现,具体步骤如下:
1. 选择一个基准元素(通常是数组的第一个元素);
2. 将数组分成两个子数组,小于基准元素的放在左边,大于基准元素的放在右边;
3. 对左右两个子数组分别进行递归排序;
4. 合并左右两个子数组。
以下是一个示例代码:
```
void quicksort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
if (left < j)
quicksort(arr, left, j);
if (i < right)
quicksort(arr, i, right);
}
```
这个代码使用了递归的方式实现快速排序,其中 `arr` 是待排序的数组,`left` 和 `right` 分别是数组的左右边界。在代码中,我们首先选择了一个基准元素 `pivot`,然后使用两个指针 `i` 和 `j` 分别从左右两端开始扫描数组,将小于基准元素的放在左边,大于基准元素的放在右边。最后,我们对左右两个子数组分别进行递归排序,直到整个数组有序。
阅读全文