首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分而治之算法不起作用

分而治之算法不起作用
EN

Stack Overflow用户
提问于 2020-07-17 22:38:04
回答 1查看 69关注 0票数 0

我正在尝试使用“分而治之”算法来解析数字的平均值,但我编写的程序只有在元素的数量是2的幂(2,4,8等)时才有效。

代码是用python编写的,如下所示

代码语言:javascript
运行
复制
def averageDyC(ini, end, notes):
    if (ini == end):
        return notes[ini]

    mid = int((ini + end) / 2)

    x = averageDyC(ini, mid, notes)
    y = averageDyC(mid + 1, end, notes)
    
    return float((x + y) / 2)
    
notes = [1, 4, 7, 8, 9, 2, 4]
average = averageDyC(0, len(notas) - 1, notes)

此代码显示3,75,但正确的平均值为3,5

如何更改此代码以允许元素的数量与2的幂不同?

EN

回答 1

Stack Overflow用户

发布于 2020-07-17 22:47:22

我真的不认为这种技术可以用来找出列表的平均值。

让我们看一下包含三个数字的列表:[1,2,3]

显然,平均值是2。

但是,如果我们将列表一分为二,就会得到[1,2][3]。他们的平均值分别为1.5和3。

如果我们将这两个相加,然后将结果除以2,我们得到2.25。

这是因为1.5是2个数的平均值,3是one数的平均值,所以我们真的应该用2来加权1.5,用1来加权3。

所以正确的和应该是(2(1.5) + 1(3)) / 3

出于这个原因,我不认为你可以使用这种方法,除非你有一个两个长度的幂列表。

编辑:同样值得注意的是,有许多好方法可以获得列表的平均值(请参阅此previous question)。我没有关注这些,因为我相信你的问题主要是问你所使用的具体算法,而不是实际找出平均值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62956263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档