一、快速排序基本思路
通过一趟排序将要排序的数据分成 两段 ,其中一段的数据均小于另外一段数据,在以此方法对两段数据相同操作(递归)
二、快速排序的实现
- 确定分界点 q[i] 可以随机取
- 跑一趟后 一侧数据全部小于另一侧数据
- 递归处理左右两侧数据
四、代码实现C++
#include <iostream>
using namespace std;
const int N = 1e6+10;
int n;
int q[N];
int quick_sort(int q[] ,int l ,int r ) {
if(l >= r) return 0;
int x = q[l],i = l-1 , j = r+1;
while( i < j ) {
do i ++ ; while( q[i] < x);
do j -- ; while( q[j] > x);
if( i < j ) swap(q[i],q[j]);
quick_sort(q , l , j);
quick_sort(q , j+1 , r);
}
}
int main() {
scanf("%d",&n);
for(int i = 0; i < n ; i++) scanf("%d",&q[i]);
quick_sort( q , 0 , n-1 );
for(int i = 0; i < n ; i++) printf("%d",q[i]);
return 0;
}