帮我写一个快速排序代码
时间: 2023-10-18 08:11:42 浏览: 29
好的,下面是快速排序的代码实现(使用递归方式):
```
void quicksort(int array[], int left, int right) {
if(left >= right) return;
int pivot = array[left];
int i = left, j = right;
while(i < j) {
while(i < j && array[j] >= pivot) j--;
if(i < j) array[i++] = array[j];
while(i < j && array[i] < pivot) i++;
if(i < j) array[j--] = array[i];
}
array[i] = pivot;
quicksort(array, left, i-1);
quicksort(array, i+1, right);
}
```
其中,`array` 表示待排序的数组,`left` 表示待排序区间的左端点,`right` 表示待排序区间的右端点。实现思路如下:
1. 首先选定一个基准元素(pivot),可以选择区间的最左边的元素。
2. 从区间的右端开始向左扫描,找到第一个小于基准元素的元素,将其与基准元素交换。
3. 从区间的左端开始向右扫描,找到第一个大于等于基准元素的元素,将其与基准元素交换。
4. 重复步骤 2 和 3,直到左右指针相遇。
5. 将基准元素交换到左右指针相遇的位置。
6. 对基准元素左右两侧的区间进行递归排序。
这样就完成了快速排序的实现。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)