tzc 1292 排序

来源:互联网 发布:二维码合成软件 编辑:程序博客网 时间:2024/04/27 20:56

方法一:

#include<iostream>#include<string>using namespace std;const int MAX_NUM=1000;void merge(long num[],int n);int main(){    string str;    while(cin>>str)    {        int len=str.size();        long num[MAX_NUM];        int i=0,j,temp;        for(j=0;j<MAX_NUM;j++)            num[j]=0;        for(j=0;j<len;)        {            temp=str[j]-'0';            if(temp!=5)            {                num[i]=num[i]*10+temp;                j++;            }            else            {                if(j)                    i++;                while(str[j]=='5')                    j++;                if(j>len-1)                    i--;            }        }        merge(num,i+1);        cout<<num[0];        for(j=1;j<=i;j++)            cout<<" "<<num[j];        cout<<endl;    }    return 0;}void merge(long num[],int n){    long temp;    int k;    for(int i=0;i<n;i++)    {        k=i;        temp=num[i];        for(int j=i;j<n;j++)            if(num[k]>num[j])                k=j;            if(k!=i)            {                num[i]=num[k];                num[k]=temp;            }    }}


方法二:

#include<stdio.h>#include<string.h>#include<stdlib.h>int cmp(const void* a,const void* b){    return *(int*)a-*(int*)b;}int main(){    char a[1010];    int s[1010],i;    while(scanf("%s",a)!=EOF)    {        i=0;        char *p=strtok(a,"5");        while(p!=NULL)        {            sscanf(p,"%d",&s[i]);            p=strtok(NULL,"5");            i++;        }        qsort(s,i,sizeof(int),cmp);        printf("%d",s[0]);        for(int j=1;j<i;j++)            printf(" %d",s[j]);        printf("\n");    }    return 0;}


原创粉丝点击