题解:选择排序优化
2025-10-17 21:12:22
发布于:浙江
8阅读
0回复
0点赞
选择排序优化
每次找到最小值和最大值,将最小值与第一项交换,最大值与最后一项交换,提高约一倍的效率。(虽然时间复杂度仍为O(n²))
代码如下
#include<bits/stdc++.h>
using namespace std;
int a[1008];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int aa=0;int q=1;int z=n;
while(aa<=n){
int ma=-1,mn=1008,x,y;
for(int i=q;i<=z;i++){
if(a[i]>ma){
ma=a[i];
x=i;
}
if(a[i]<mn){
mn=a[i];
y=i;
}
}
swap(a[x],a[z]);
if(z==y){y=x;}
if(z<q){
int nn=z;
z=q;
q=nn;
}
z--;
swap(a[q],a[y]);
q++;
aa+=2;
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
全部评论 3
顶
2025-10-17 来自 浙江
0顶
2025-10-17 来自 浙江
0顶
2025-10-17 来自 浙江
0


有帮助,赞一个