#include<stdio.h> #include<string.h> #include<math.h> #define MAX 1000000+10 #define Max(a,b) a>b?a:b #define Min(a,b) a<b?a:b struct DNA{ char data[100]; int sum; }s[50],temp; int main() { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { int i,j,k; for(i=0;i<m;i++) { scanf("%s",s[i].data); } int cnt; for(i=0;i<m;i++) { for(j=0;j<n;j++) { for(k=j;k<n;k++) { if(s[i].data[j]>s[i].data[k]) { cnt++; } } } s[i].sum=cnt; cnt=0; } for(i=1;i<m;i++) { temp=s[i]; for(j=i-1;j>=0&&s[j].sum>temp.sum;j--) { s[j+1]=s[j]; } s[j+1]=temp; } // for(i=0;i<m;i++) // { // for(j=i+1;j<m;j++) // { // if(s[i].sum>s[j].sum) // { // temp=s[i]; // s[i]=s[j]; // s[j]=temp; // } // } // } for(i=0;i<m;i++) { printf("%s\n",s[i].data); } } } |
Double click to view unformatted code.