快速排序最后 一个超时了,十万个相同元素的测试点怎么排啊
查看原帖
快速排序最后 一个超时了,十万个相同元素的测试点怎么排啊
1165831
zuilp楼主2023/12/25 09:02
#include<stdio.h>
void kp(int* arr,int a,int b)
{
	if(b<=a)
	return ;
   	int key=arr[(a+b)/2],i=a,big=b;
   	arr[(a+b)/2]=arr[a];
while(a<b)
{
	while(arr[b]>key&&a<b)
		b--;
		if(a<b)
		arr[a]=arr[b];
	while(arr[a]<=key&&a<b)
        a++;
        if(a<b)
        arr[b]=arr[a];
}
arr[a]=key;
kp(arr,i,a-1);
kp(arr,a+1,big);
}
int main()
{
	int n;
	scanf("%d",&n);
	int arr[n];
	int i;
	for(i=0;i<n;i++)
	scanf("%d",&arr[i]);
	kp(arr,0,n-1);
	for(i=0;i<n;i++)
	printf("%d ",arr[i]);
	return 0;
}
2023/12/25 09:02
加载中...