首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C+编程实战入门题解:不排序统计,允许并列的排名

题目描述

在我们参加的各种竞赛中,允许并列的排名方式是经常遇到的。 例如有四名选手的成绩分别为50、80、50、30分,则80分的选手为第一名,50分的两名选手均为第二名,30分的选手为第四名。 请编写一个程序,计算每个选手在这种排名方式之下的名次(分数高的选手排前面)。

输入

第一行为一个整数 N,表示参赛的选手数,1

输出

一行,表示每位选手的名次。

样例输入

4

50 80 50 30

样例输出

2 1 2 4

解题思路:

本地首先想到的就是采用排序。但稍加分析,发现只是要求每名选手的排名,并没要求将各位选手按序排列,因此可以另辟蹊径,对每一位选手而言,不管有没有并列,他的名次=所以比他成绩高的人数+1,本期可以采用只比较分数高度,而不需要交换,也不需要占用另外的空间,减少了时间和空间复杂度。

参考程序和运行结果

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200310A0OJ9U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券