美文网首页
1.1. Python, 数组中任意两元素的最大乘积(快速算法)

1.1. Python, 数组中任意两元素的最大乘积(快速算法)

作者: LeeMin_Z | 来源:发表于2018-05-13 16:23 被阅读342次

    目的:
    找出一个数组中任意两个非负数的最大乘积,并且需时较短,符合测试需求。

    1. 朴素算法:
      算任意两个数的乘积并找出最大值。复杂度O(n^2),想都不要想了,肯定很慢。

    2. 快速算法,仅找出最大的两个元素。注意这里用的是元素的顺序index,表示第index个元素。

    3. 注意coursera上恶心的检查方式,input不是一行,而是两行。第一行是数组长度,第二行才是数组的元素。

    4. 伪代码 sudo code

    MaxPairwiseProductFast(A[1...n]):
    
    index1 <-- 1
        for i from 2 to n:
            if A[i] > A[index1]:
            index1  <--  i
    
    index2  <-- 1
        for i from 2 to n:
            if A[i] != A[index1] and A[i] > A[index2]:
            index2  <-- i
    
    return A[index1] * A[index2]
    
    1. Python实现
    # Uses python3
    len1 = input()
    n = input()
    a = [int(x) for x in n.strip().split()]
    le = int(len1)
    
    # check the largest number's index 
    
    index1 = 0
    
    for i1 in range(1,le):
        if a[i1] > a[index1] :
            index1 = i1
    
    # check the second largest number's index 
    
    if index1 == 0 : index2 = 1
    else: index2 = 0
    
    for i2 in range(1,le):
        if a[i2] > a[index2] and i2 != index1 :
            index2 = i2
    
    result = a[index2] * a[index1]
    print(result)
    

    参考资料
    Coursera
    数据结构与算法
    美国加州大学圣地亚哥分校
    国立高等经济大学

    2018.5.13

    相关文章

      网友评论

          本文标题:1.1. Python, 数组中任意两元素的最大乘积(快速算法)

          本文链接:https://www.haomeiwen.com/subject/qxwbrftx.html