解题思路:
① 将if(a[j]<a[k]) 改成if(fabs(a[j])>fabs(a[k]))
参考代码:
#include<stdio.h> #include<math.h> void selectsort(int a[],int n); int main() { int n; while(scanf("%d",&n)!=EOF){ int a[n]; for(int i=0;i<n;i++)scanf("%d",&a[i]); selectsort(a,n); for(int i=0;i<n;i++)printf("%d ",a[i]); printf("\n"); } } void selectsort(int a[],int n){ for(int i=0;i<n;i++){ int k=i; // printf("%d ",k); for(int j=i+1;j<n;j++) // printf("%d %d %d\n",k,j,i); if(fabs(a[j])>fabs(a[k])) k=j; //printf("%d %d %d\n",k,j,i); int x=a[i]; a[i]=a[k]; a[k]=x; // printf("%d %d %d %d\n",k,j,i,a[i]); } }
0.0分
0 人评分