分治法
算法理解
快排:
在区间 \([x,y]\) 中,任取一个 \(key\) 值,把小于 \(key\) 放左,大于反之,然后递归实现
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n;
int a[N];
void quicksort(int x,int y){
if(x>=y) return;
int l=x,r=y,key=a[x];
while(l<r){
while(l<r&&a[r]>key) r--;
a[l]=a[r];
while(l<r&&a[l]<=key) l++;
a[r]=a[l];
}
a[l]=key;
quicksort(x,l-1);
quicksort(l+1,y);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
quicksort(1,n);
for(int i=1;i<=n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
T1:
利用快排的思想,只不过

浙公网安备 33010602011771号