Problem J: 零起点学算法89——程序设计竞赛
#include<stdio.h> //选择排序法 int main(){ int n,a[50]; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%d",&a[i]); } for(int i=0;i<n-1;i++){ int k=i,t; for(int j=i+1;j<n;j++) if(a[k]<a[j]) k=j; if(k!=i){ t=a[i]; a[i]=a[k]; a[k]=t; } } for(int i=0;i<n-1;i++) printf("%d ",a[i]); printf("%d\n",a[n-1]); } return 0; }
#include<stdio.h> //冒泡排序法
#include<stdio.h> int main(){ int n,a[50]; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++) scanf("%d",&a[i]); int t; for(int i=1;i<n;i++){ int flag=0; for(int j=0;j<n-i;j++){ if(a[j]<a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; flag=1; } if(flag==0) break; } } for(int i=0;i<n-1;i++){ printf("%d ",a[i]); } printf("%d\n",a[n-1]); } return 0; }
#include<stdio.h> //冒泡排序 改进后的
int main(){ int n,a[50]; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++) scanf("%d",&a[i]); int t; for(int i=1;i<n;i++){ for(int j=0;j<n-i;j++){ if(a[j]<a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } for(int i=0;i<n-1;i++){ printf("%d ",a[i]); } printf("%d\n",a[n-1]); } return 0; }