# -*- coding: utf-8 -*-
'''
Python程序员面试算法宝典---解题总结: 第4章 数组 4.13 如何在不排序的情况下求数组中的中位数
题目:
所谓中位数就是一组数据从小到大排序后中间的那个数字。如果数组长度为偶数,
那么中位数的值就是中间两个数字相加除以2,如果数组长度为奇数,那么中位数
的值就是中间那个数字。
分析:
实际就是求第k小的数的变形版本。
当数组长度为length=奇数,k=length/2 + 1,
否则,令k=length/2 + 1, k=length/2
关键:
参考:
Python程序员面试算法宝典
'''
def partition(array, low, high):
if not array:
return
value = array[low]
while low < high:
while low < high and array[high] >= value:
high -= 1
array[low] = array[high]
while low < high and array[low] <= value:
low += 1
array[high] = array[low]
array[low] = value
return low
def findKthMin(array, low, high, k):
if not array:
return
if low <= high:
index = partition(array, low, high)
if index =
Python程序员面试算法宝典---解题总结: 第4章 数组 4.13 如何在不排序的情况下求数组中的中位数
最新推荐文章于 2023-12-08 13:36:03 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)