以下为我的代码
using namespace std;
int number[100005];
void quicksort(int left, int right)
{
if(left >= right)
return;
int i,j,key;
i = left;
j = right;
key = number[left];
while(i != j)
{
while(number[j] >= key && i < j)
j--;
while(number[i] <= key && i < j)
i++;
if(i < j)
swap(number[i], number[j]);
}
number[left] = number[i];
number[i] = key;
quicksort(left, i-1);
quicksort(i+1, right);
}
int main()
{
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++)
scanf("%d",&number[i]);
quicksort(1, n);
for(int i = 1; i <= n; i++)
printf("%d ",number[i]);
return 0;
}
以下为AC代码
using namespace std;
void quick_sort(int nums[],int low,int high)
{
if(low>=high)
{
return;
}
int l=low;
int r=high;
int tmp=nums[l];
while(l<r)
{
while(nums[r]>tmp&&l<r)
{
r--;
}
while(nums[l]<=tmp&&l<r)
{
l++;
}
if(l<r)
{
swap(nums[l],nums[r]);
}
}
swap(nums[low],nums[r]);
quick_sort(nums,low,l-1);
quick_sort(nums,l+1,high);
}
int main()
{
int n,a[100005];
cin>>n;
for(int i=0;i<n;++i)
{
scanf("%d",a+i);
}
random_shuffle(a,a+n);//随机乱序
quick_sort(a,0,n-1);
for(int i=0;i<n;++i)
{
printf("%d ",a[i]);
}
return 0;
}
想知道为什么我会有 3 个 TLE,好苦恼,求教!谢谢!
我编译器不是这样子的,一弄过来就这样了
@goalltheway: 可以看看这
@Conan-jine: 感谢
@Conan-jine: 编译器换了一个,预览以后还那样,,我这是这样的,没找到插入代码
@goalltheway: 在这改吧,我用的tiny
@Conan-jine:
我界面这样的,不好意思。。我问题太多了
@goalltheway: 点击左边的常用选项
@Conan-jine: 欧克