The One day 中位数的计算
""" 中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个支持以下两种操作的数据结构: void addNum(int num) - 从数据流中添加一个整数到数据结构中。 double findMedian() - 返回目前所有元素的中位数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-median-from-data-stream 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 """ """ author :jiyanjiao date : 2019-10-21 """ class MedianFinder: nuber_list = [] sum = 0 def __init__(self): """ initialize your data structure here. """ def addNum(self, num: int) -> None: self.nuber_list.append(num) def findMedian(self) -> float: nb = self.nuber_list oder_list = [] le = len(nb) if le <=1: raise Exception("中位数至少需要两位数") for i in range(0, le): for j in range(i+1, le): if nb[j] < nb[i]: tmp = nb[i] nb[i] = nb[j] nb[j] = tmp oder_list.append(nb[i]) print(nb[i]) i += 1 oder_le = len(oder_list) if oder_le % 2 == 0: m1 = (oder_list[int(oder_le/2)]+oder_list[int(oder_le/2)-1])/2 else: m1 = oder_list[int(oder_le/2)] print(m1) return m1 # Your MedianFinder object will be instantiated and called as such: if __name__ == '__main__': obj = MedianFinder() obj.addNum(1) obj.addNum(2) obj.addNum(4) obj.addNum(3) obj.addNum(5) param_2 = obj.findMedian()