33,008
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
void quick_sort(int a[],int b,int e){//前闭后开
if(e-b<=1)return;
int t=a[b];
int i=b,j=e+1;
while(true){
do{++i;}while(i<e&&a[i]<t);
while(a[--j]>t);
if(i>=j)break;
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
a[b]=a[j];
a[j]=t;
quick_sort(a,b,j);
quick_sort(a,j+1,e);
}
int main(){
int array[]={5,-2,-1,10,15,-5};
int l=sizeof(array)/4;
quick_sort(array,0,l);
int k=l/2;
int min=array[0],max=array[1];
for(int m=0,n=1;n<l;){
int spa=array[n]-array[m];
if(spa<k){
++n;
continue;
}
else if(spa==k){
max=array[n];
min=array[m];
break;
}
else{
if(max-min<k||(max-min>k&&spa<max-min))
max=array[n],min=array[m];
++m;
}
}
cout<<min<<" "<<max<<endl;
return 0;
}
#include<iostream>
using namespace std;
void quick_sort(int a[],int b,int e){//前闭后开
if(e-b<=1)return;
int t=a[b];
int i=b,j=e+1;
while(true){
do{++i;}while(i<e&&a[i]<t);
while(a[--j]>t);
if(i>=j)break;
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
a[b]=a[j];
a[j]=t;
quick_sort(a,b,j);
quick_sort(a,j+1,e);
}
int main(){
int array[]={5,-3,-1,10,-2,-5};
int l=sizeof(array)/4;
quick_sort(array,0,l);
for(int i=0;i<l;++i)
cout<<array[i]<<endl;
int k=l/2;
int min=array[0],max=array[1];
for(int m=0,n=2;n<l;){
int spa=array[n]-array[m];
if(spa<k){
++n;
continue;
}
else if(spa==k){
max=array[n];
min=array[m];
break;
}
else{
if(max-min<k||(max-min>k&&spa<max-min))
max=array[n],min=array[m];
}
}
cout<<max<<" "<<min<<endl;
return 0;
}