我发现了一个问题:
Let's consider a vector x = (x1, x2 ... xn) with real elements.
1). Sort the vector -- easy
2). Find a real number a so that sum ( abs (xi - a) ) is minim
我不知道对数组进行排序是否有帮助,但是对于2).
我认为我可以对向量中的所有元素进行aritmetic sum并说avg是我们正在寻找的那个。
但这不正确。例如:
x = (1, 10, 10)
avg = [ 21/3 ] = 7 = a
sum = |1 - 7| + |10 - 7| + |10 - 7| = 6 + 3 + 3 = 12
但如果我们考虑a = 10,我们得到
sum = |1 - 10| + |10 - 10| + |10 - 10| = 9 < 12
我能想到的另一种解决方案是从最小元素到最高元素的蛮力,步长为i += 0.1
答案 0 :(得分:4)
您正在寻找median - 而不是平均值。
这是因为您正在寻找的实际上是geometric median - 如果您只有一个维度(并且您确实如此),则恰好是标准中位数。
可以使用Selection Algorithm在O(n)
中找到中位数 - 因此排序是多余的。