📅  最后修改于: 2023-12-03 15:07:34.636000             🧑  作者: Mango
该问题要求我们编写一个程序来求解有序集合中的中位数。在该集合中,元素可能是正整数或负整数。如果集合中的元素个数N为奇数,则中位数为第(N/2+1)个元素;如果N为偶数,则中位数为第N/2个元素和第N/2+1个元素的平均数。
我们可以将有序集合排序,然后根据奇数和偶数的情况,分别求出中位数。
时间复杂度:O(NlogN),当数据量较大时不适用。
我们不必将集合排序,只需要通过上文所述的规律,找到中位数的位置,再依次遍历集合即可。
时间复杂度:O(N)
def find_median(arr):
arr.sort()
n = len(arr)
if n % 2 == 0:
return (arr[int(n / 2)] + arr[int(n / 2) - 1]) / 2
else:
return arr[int(n / 2)]
def find_median(arr):
n = len(arr)
if n % 2 == 0:
return (arr[int(n / 2)] + arr[int(n / 2) - 1]) / 2
else:
return arr[int(n / 2)]
以上均为python实现,其他语言实现方法类似。