Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
话说《算法导论》上面的排序算法实在是经典……昨晚刚刚看完第一章介绍的排序算法,结果这里就用上了……回忆的写出来,越写越觉得那个算法的精妙……好书啊! 顺便贴出来源程序…… /* algorithms: get the input: int length,num; string a[100][51]; for culculation: int count[num.]; for(i=0;i<length[]) for: j- 0~length[]-1{ for: t - (j+1~length) if(a[i][j]>a[i][t]) count[i]++; (order of the output) order[num.]: initialize: for i:0~(num-1): order[i]=i; sortting: for(i=1;i<num;i++){ if(count[i-1]>count[i]){ tem=count[i];temo=order[i]; for(j=i;count[j-1]>tem && j>0;j--){ count[j]=count[j-1];order[j]=order[j-1]; } count[j]=tem;order[j]=temo; } } output: for(i=0;i<num;i++) printf("%s",string[100][order[num.]]); End of Algorithms*/ #include <stdio.h> main(){ int length,num,order[100],count[100],tem,temo,i,j,t; char a[100][51]; scanf("%d%d",&length,&num); for(i=0;i<num;i++) scanf("%s",a[i]); for(i=0;i<num;i++) count[i]=0; for(i=0;i<num;i++) for(j=0;j<length;j++) for(t=j+1;t<length;t++) if(a[i][j]>a[i][t]) count[i]++; for(i=0;i<num;i++) order[i]=i; for(i=1;i<num;i++){ if(count[i-1]>count[i]){ tem=count[i];temo=order[i]; for(j=i;count[j-1]>tem && j>0;j--){ count[j]=count[j-1];order[j]=order[j-1]; } count[j]=tem;order[j]=temo; } } for(i=0;i<num;i++) printf("%s\n",a[order[i]]); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator