冒泡排序
#include<stdio.h> int main()///冒泡排序 { int a[10005]; int n,temp=0,flag=0; while(scanf("%d",&n)!=EOF) { int sortnum=n-1,lastsort;///优化第二歩,如果后面已经有序,小循环里就停止冒泡 for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<n;i++) { flag=0; ///优化第一步,如果已经排好序了,提前跳出大循环 for(int j=0;j<sortnum;j++) if(a[j]>a[j+1]) { temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; flag=1; lastsort=j; ///每次小循环更新冒泡的结束位置 } sortnum=lastsort; ///需要把值弄到外面另一个变量里,不然的话边冒泡边改变循环条件,难免出错 if(flag==0) break; } for(int i=0;i<n;i++) printf("%d\t",a[i]); } return 0; }