TLE10分代码:−−>评测点详情<−−
#include<bits/stdc++.h>
using namespace std;
int fruit[10005],n,p=0;
int swap(int &x,int &y)//这里的swap是自己定义的,而下面的代码是用的库里面的
{
int t=x;x=y;y=t;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>fruit[i];
sort(fruit+1,fruit+1+n);
int head=1,ans=0;
for(;head<n;){
int tmp=fruit[head]+fruit[head+1];
ans+=tmp;head++;
int L=head;fruit[L]=tmp;
while(fruit[L]>fruit[L+1]&&L<n)swap(fruit[L],fruit[L+1]),L++;
}
cout<<ans;
return 0;
}
AC代码:−−>评测点详情<−−
#include<bits/stdc++.h>
using namespace std;
int fruit[10005],n,p=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>fruit[i];
sort(fruit+1,fruit+1+n);
int head=1,ans=0;
for(;head<n;){
int tmp=fruit[head]+fruit[head+1];
ans+=tmp;head++;
int L=head;fruit[L]=tmp;
while(fruit[L]>fruit[L+1]&&L<n){
swap(fruit[L],fruit[L+1]),L++;
}
}
cout<<ans;
return 0;
}
观察两份代码,仅能发现代码的差别为:一个是自定义的swap函数,另一个使用了库中函数。
求问:这两份代码的效率差别这么大吗(萌新求带)