用插入都没超时但是用快排超时了是为什么
查看原帖
用插入都没超时但是用快排超时了是为什么
263109
Lc6206楼主2024/12/19 12:51

快排代码如下

#include<bits/stdc++.h> 
using namespace std;
int a[100010];
void QuickSort(int start,int end)
{
	if(start>=end)return ;
	int i=start,j=end;
	int t=a[i];
	while(i<j)
	{
		while(i<j&&a[j]>t)
			j--;
		if(i<j)
		{
			a[i]=a[j];
			i++;
		}
		while(i<j&&a[i]<=t)
			i++;
		if(i<j)
		{
			a[j]=a[i];
			j--;
		}
	}
	a[i]=t;
	QuickSort(start,i-1);
	QuickSort(i+1,end);
}

int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	scanf("%d",&a[i]);
	QuickSort(0,n-1);
	printf("%d",a[0]);
	for(int i=1;i<n;i++)
	printf(" %d",a[i]);
	return 0;
}
2024/12/19 12:51
加载中...