python编写函数实现求解任意数字序列的中位数
时间: 2023-05-02 11:05:33 浏览: 128
python 编写一个函数,输入n为偶数时,调用函数求解(示例)
5星 · 资源好评率100%
使用Python内置函数可以实现求解任意数字序列的中位数。其中常用的方法有:
1. 排序法:将序列排序,然后取中位数。
2. 快速选择法:类似快速排序,每次选择一个元素作为基准值,将序列分成两部分,不断递归,最后找到中位数。
这两种方法在Python中都非常容易实现,代码如下:
1. 排序法:
```python
def findMedian(arr):
arr.sort()
n = len(arr)
if n % 2 == 0:
return (arr[n//2-1] + arr[n//2])/2
else:
return arr[n//2]
```
2. 快速选择法:
```python
def findMedian(arr):
def select(arr, l, r, k):
if l == r:
return arr[l]
i = partition(arr, l, r)
if k == i:
return arr[i]
elif k < i:
return select(arr, l, i-1, k)
else:
return select(arr, i+1, r, k)
def partition(arr, l, r):
pivot = arr[r]
i, j = l, r-1
while i <= j:
if arr[i] <= pivot:
i += 1
else:
arr[i], arr[j] = arr[j], arr[i]
j -= 1
arr[i], arr[r] = arr[r], arr[i]
return i
n = len(arr)
if n % 2 == 0:
return (select(arr, 0, n-1, n//2-1) + select(arr, 0, n-1, n//2))/2
else:
return select(arr, 0, n-1, n//2)
```
阅读全文