我正在尝试使用“分而治之”算法来解析数字的平均值,但我编写的程序只有在元素的数量是2的幂(2,4,8等)时才有效。
代码是用python编写的,如下所示
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的幂不同?
发布于 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)。我没有关注这些,因为我相信你的问题主要是问你所使用的具体算法,而不是实际找出平均值。
https://stackoverflow.com/questions/62956263
复制相似问题