Middle - HolmesJJ/Data-Structures-and-Algorithms GitHub Wiki
要点
中位数有两个
- 下位中位数:lowerMedian = (length - 2) / 2
- 上位中位数:upperMedian = length / 2
例:0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- 下位中位数:(10 - 2) / 2 = 4
- 上位中位数:10 / 2 = 5
常用的是下位中位数,通用的写法如下,语言int经常自动向下取整,
median = (length - 1) / 2
指针的区间当然可以开区间,也可以闭区间,也可以半开半闭。但是老老实实两头取闭区间总是不会错。上面的中位数,转换成两头闭区间 [low, high] 就变成下面这样:
median = low + (high - low) / 2
这里还有个常见的坑,不要图快用加法,会溢出,
median = (low + high) / 2