# -*- 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 == k - 1:
return array[index]
elif index > k - 1:
result = findKthMin(array, low, index - 1, k)
Python程序员面试算法宝典---解题总结: 第4章 数组 4.13 如何在不排序的情况下求数组中的中位数
最新推荐文章于 2024-12-28 07:45:00 发布
本文深入探讨Python程序员面试中常见的算法问题——如何在保持数组原序的情况下,快速有效地求解中位数。通过解析解题思路,帮助求职者提升算法能力。


691

被折叠的 条评论
为什么被折叠?



