P1177 快速排序

版权声明:转载请注明原文地址即可,要是本文对您有些许帮助的话,请您在下方点个赞,谢谢啦ヾ(o◕∀◕)ノヾ https://blog.csdn.net/qq_33583069/article/details/88593526

模板一:
最裸的模板,效率低,容易T,这道题就TLE了。

#include<bits/stdc++.h>
using namespace std;
#define N 100010
int n,a[N];
void swap(int& x,int& y){int t=x;x=y;y=t;}
void QuickSort(int l,int r){
	if(l>=r)return;
	int i=l+1,j=r,key=a[l];
	while(i<j){
		while(a[j]>=key&&j>i)j--;
		while(a[i]<=key&&i<j)i++;
		swap(a[i],a[j]);	
	}
	if(a[i]<key){
		swap(a[i],a[l]);
		QuickSort(l,i-1);
		QuickSort(i+1,r);
	}
	else{
		swap(a[i-1],a[l]);	
		QuickSort(l,i-2);
		QuickSort(i,r);
	} 
}
int main(){
	ios::sync_with_stdio(false);cin>>n;
	for(int i=0;i<n;i++)cin>>a[i];
	QuickSort(0,n-1);
	for(int i=0;i<n;i++)cout<<a[i]<<" ";
	return 0;
}

题解里面有一群人的模板是TLE的。都不说明一下,好气啊

具体的优化方法我稍后研究一下。
先用sort水过去。。

#include<bits/stdc++.h>
using namespace std;
#define N 100010
int n,a[N];
int main(){
	ios::sync_with_stdio(false);cin>>n;
	for(int i=0;i<n;i++)cin>>a[i];
	sort(a,a+n);
	for(int i=0;i<n;i++)cout<<a[i]<<" ";
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_33583069/article/details/88593526