数据流中的中位数python_刷题记录(python)05-数据流中的中位数

  • Post author:
  • Post category:python


题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,

那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。

解题思路:接收数据,对数据进行排序,判断数据的长度,如果是奇数位,则直接返回中位数,若是偶数位,则计算中间两个值得平均值并返回。

代码如下:

class Solution:

def Insert(self, num):

mid = self.GetMedian(num)

return mid

def GetMedian(self, num):

num = self.getsort(num)

if len(num) % 2 == 1:

mid = num[len(num) // 2]

else:

mid = (num[len(num) // 2] + num[(len(num) – 1) // 2]) / 2

return mid

def getsort(self, num):

for i in range(len(num) – 1):

for j in range(i + 1, len(num)):

if num[i] > num[j]:

num[i], num[j] = num[j], num[i]

return num

if __name__ == ‘__main__’:

s = Solution()

num = [1, 5, 7, 4, 6, 2, 8, 3]

mid = s.Insert(num)

print(mid)

【以上解题思路纯属个人观点,如有不妥之处,还请大家批评指正!】



版权声明:本文为weixin_39628384原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。