用选择法,对输入的20个数进行从大到小的排序

如题所述

#include<stdio.h>
int main(){
int i,j,p,t;
int a[20];
printf("Please input 20 numbers:\n");  /*输入20个数,并且存放到数组a[i]中*/
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<19;i++){   /*只对前面19个数分析,最后一个数在前面19确定下来后就自动确定了*/
p=i;
for(j=i+1;j<20;j++){  /*每次选取一个i,则只需对其后面的a[i+1]到a[9]这几个数进行排序*/
if(a[p]>a[j]) p=j;  /*如果a[p](即a[i])大于a[j],则将j的值赋予p*/
}
if(p!=i){
t=a[p];
a[p]=a[i];
a[i]=t;
}  /*此步执行完以后,a[i]为最小值*/
}       /*执行完19次循环后,排序完成*/
printf("The scored numbers are as follows:\n");
for(i=0;i<20;i++)   /*按从小到大的循序输出20个数*/
   printf("%4d",a[i]);
return 0;
}

追问

怎么感觉很复杂?我用的程序是c++

温馨提示:答案为网友推荐,仅供参考