输入一个无序整型数组data[] , 查找出第二大元素以及角标。 例如:data[1,2,1,3,7,3,4,4], 输出4,7
时间: 2023-09-08 10:09:54 浏览: 96
如何寻找数组中的第二大数
5星 · 资源好评率100%
可以使用一个变量记录最大值和次大值,以及两个变量分别记录它们的下标。遍历整个数组,如果当前元素大于最大值,则将最大值和次大值更新为当前元素和最大值,并将最大值的下标更新为当前元素的下标;如果当前元素大于次大值但小于最大值,则将次大值更新为当前元素,并将次大值的下标更新为当前元素的下标。最终,次大值和其下标就是需要的结果。
以下是一个Python实现:
```python
def find_second_largest(data):
max_val = second_max_val = float('-inf')
max_idx = second_max_idx = -1
for i, val in enumerate(data):
if val > max_val:
second_max_val = max_val
second_max_idx = max_idx
max_val = val
max_idx = i
elif val > second_max_val and val != max_val:
second_max_val = val
second_max_idx = i
return second_max_val, second_max_idx
```
使用上述函数,可以得到给定数组的第二大元素和其下标:
```python
data = [1, 2, 1, 3, 7, 3, 4, 4]
second_largest, second_largest_idx = find_second_largest(data)
print(second_largest, second_largest_idx) # 输出 4, 7
```
阅读全文