一个数组长度10000,求随机从数组中抽两个数字的相乘值最大,且性能最好,编写代码
时间: 2024-01-04 22:03:24 浏览: 73
对于长度为10000的数组,我们可以利用线性扫描的方式来找到最大的两个数,而不需要对整个数组进行排序。以下是一个示例的Python代码实现:
```python
import random
def find_max_product(arr):
max1 = float('-inf') # 最大值初始化为负无穷大
max2 = float('-inf') # 第二大值初始化为负无穷大
for num in arr:
if num > max1:
max2 = max1
max1 = num
elif num > max2:
max2 = num
max_product = max1 * max2
return max_product
# 生成长度为10000的随机数组
arr = [random.randint(1, 100) for _ in range(10000)]
max_product = find_max_product(arr)
print("最大乘积为:", max_product)
```
这段代码通过一次线性扫描就可以找到最大的两个数,并计算它们的乘积。时间复杂度为O(n),其中n为数组的长度。这种方法的性能较好,不需要对整个数组进行排序。
阅读全文