整数排序问题

描述:根据依次输入的数字,按从大到小的排序

运行时间限制:10s

内存限制:128MByte

输入:一行正整数,其长度小于4096,整数之间用非数字隔开

输出:排序后的整数,一个空格隔开

样例输入:8 7R9T2H5 3

样例输出:9 8 7 5 3 2

 

分析:此题比较简单,使用字符串及排序呢算法即可,使用C++同时要注意空格问题

 

#include<iostream>
#include<algorithm>
#include<cstring> 
using namespace std; 
bool compare(int a,int b)
{
	return a>b;
}
int main(){ 
    int a[30]={0}; 
    char str[200]; 
   
    cin.getline(str,200); //使用cin,有空格便结束
    
    bool flag=0; 
    int i=0,j=0; 
    int s=0;
	char a1;     
   int c=0;  
    int num=strlen(str);     
    for(i=0;i<num;){ 
        while(str[i]>='0' && str[i]<='9' &&i<num ){ 
            s=s*10+int(str[i])-int('0'); 
            i++; 
            flag=1; 
        } 
        if(flag==1){ 
            a[j++]=s; 
            s=0; 
            flag=0; 
        } 
        i++; 
    } 
    i=0;
	sort(a,a+j,compare);  
    while(i<j){ 
        cout<<a[i]<<" "; 
        i++; 
    } 
    cout<<endl; 
    return 0; 
}

  

posted @ 2016-09-06 10:30  驿外断桥  阅读(174)  评论(0)    收藏  举报