快速排序 C++

以下为我的代码

include<bits/stdc++.h>

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代码

pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")

include <bits/stdc++.h>

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,好苦恼,求教!谢谢!

回答

你这格式看着好难看,复制粘贴看你的代码也是没有任何格式的,能否去改一下你的代码格式

https://q.cnblogs.com/q/127456/

如果你的编辑器不是这样子的,就改,设置里可以设置

以上是 快速排序 C++ 的全部内容, 来源链接: www.h5w3.com/37857.html

回到顶部