兄弟你给的代码这么长,分又不多,这让我很纠结呐
说下思路吧,代码没有注释,我就不细看了,你的要求是代码少一点,那么执行的效率就作为次要因素来考虑了
你已经限定的分辨率是两位小数,最大100分,那么可以把所有的数据可以转换成10000以内的整数,这样就简单了,开一个数组 a[10000],初始化成全零,来一个分数对应的单元加1。
输出的时候再开一个数组,b[10000],把a中对应的索引插入到b中,像这样
b[0] = 0; 对应的意思是得0分的最多,排第1位,接下来看a[1]的值,代表的是得0.01分的人数,与a[b[i]]依次比较,然后插入到b中。最后的b中可以是这样的数 8000, 9000, 6000....分别表示80分的最多人,90.00分的次之。。。80.00分对应的人数在a[8000]中存放。
这个程序应该是b的依次插入比较费时间,但程序应该很简单。
或者直接从a中选择最大的值依次放入b中,取一个最大值,然后把对应的a清零,这样快一些,但会丢失人数信息。
嗯。。这个,给点时间哈
再想想