题目描述
blablabla
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
#include<iostream>
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 i=l-1,j=r+1;//写在两侧 是因为交换之后会先往中间移动一次
int x=q[l];//这里会有一个边界问题需要关注
while(i<j){//为什么需要这个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);//这里为什么是j
quick_sort(q,j+1,r);//和j+1?
}
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;
}
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla