题目1: 请用任意语言编写如下函数,输入为长度为N的 int 型数组,输出为每个数的排名(数值最大排名为 1)注意: (1)需一定程度考虑算法效率 (2)允许直接调用内置的 sort0)函数,而不必重新编写 sort 算法例如,输入[100,-3,2,0,1],输出为[1,5,2,4,3]
时间: 2024-02-18 10:59:35 浏览: 91
输入一个任意长度的数组,再对数组排序程序
4星 · 用户满意度95%
以下是Python实现的代码:
```python
def rank_array(arr):
# 对数组进行排序,从大到小排列
sorted_arr = sorted(arr, reverse=True)
# 使用字典存储每个数的排名
rank_dict = {}
for i, num in enumerate(sorted_arr):
if num not in rank_dict:
rank_dict[num] = i + 1
# 返回每个数的排名
return [rank_dict[num] for num in arr]
```
该函数首先对输入数组进行从大到小的排序,然后使用字典存储每个数的排名。最后返回每个数的排名。算法效率为 $O(nlogn)$,其中 n 为数组长度,主要由排序算法决定。
阅读全文