首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组中间指标计算的差异?

数组中间指标计算的差异?
EN

Stack Overflow用户
提问于 2018-03-21 23:00:21
回答 1查看 157关注 0票数 0

我一直在试图解决QuickSort,并且通过一个场景,我们选择了pivot元素作为中间元素。

http://www.java2novice.com/java-sorting-algorithms/quick-sort/

代码语言:javascript
复制
 // calculate pivot number, I am taking pivot as middle index number
        int pivot = array[lowerIndex+(higherIndex-lowerIndex)/2];

这与下面获得中间指数的方法有多大的区别?

代码语言:javascript
复制
        int pivot = array[(lowerIndex+higherIndex)/2];

我记得我以前也见过这么多次。我肯定我错过了这样一种情况,当我们得到一个奇数或什么的时候,这是有帮助的。

我尝试了几个示例值,但两种方法都得到了相同的响应。我遗漏了什么?

谢谢你的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-21 23:06:34

更有可能

(lowerIndex+higherIndex)/2

溢流而非溢出

lowerIndex+(higherIndex-lowerIndex)/2.

例如,对于lowerIndex == higherIndex == Integer.MAX_VALUE / 2 + 1

编辑:

表达式等价性的数学证明

代码语言:javascript
复制
l + (r - l)/2                            (in java notation)
  = l + round_towards_zero((r - l) / 2)  (in math notation)
  = round_towards_zero(l + (r - l) / 2)  (since l is an integer)
  = round_towards_zero((2 * l + r - l) / 2)
  = round_towards_zero(r + l) / 2)
  = (l + r) / 2                          (in java notation)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49417881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档