#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 +10;
int n;
int q[N];
void quick_sort(int q[], int l, int r)
{
if(l >= r) return; //判断边界
int x = q[l + r >> 1];
int i = l - 1, j = r + 1; //两个指针
while(i < j)
{
do i++;while(q[i] < x); //把i往后移,直到q[i] > x,就停止
do j--;while(q[j] > x); //把j往前移,直到q[j] < x, 就停止
if(i < j) swap(q[i],q[j]); //只要i与j没有相遇,并且都停了,就交换一下,各取所需
}
quick_sort(q, l, j); //就是第一遍排完了,现在把[l, j]区间的再快排
quick_sort(q, j + 1, r); //第一遍排完了,接下来把[j + 1, r]区间的再排序
}
int main()
{
cin >> n;
for(int i = 0; i < n ; i++) cin >> q[i];
quick_sort(q, 0, n - 1);
for(int i = 0; i < n ; i++) cout << q[i] <<" ";
return 0;
}
C++: 快速排序
于 2023-06-11 18:11:29 首次发布
这是一个使用C++编写的快速排序算法实现,通过输入整数数组,对数组进行排序。程序首先定义了快速排序的函数quick_sort,然后在主函数main中读取用户输入的数组大小和元素,调用快速排序函数对数组进行排序,并输出排序后的结果。
摘要由CSDN通过智能技术生成