搜索工作 |
搜索工作 公司点评 查工资 看趋势
微信

使用微信服务,更方便

职友集>Java面试题 > 介绍一下java中的二分法运用

介绍一下java中的二分法运用

2015-05-10 06:30:02 阅读( 83 )

2272人 收藏本页

标签:Java面试题

/*二分法的前提是这个数组是从大到小或者从小到大的排序方式,以下是按照从小到大的方式*/

public class Test {
public static void main(String[] args) {
// 定义一个数组
int nums[] = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 33, 34 };
// 欲查询的数字
int num = 35;
// 输出num在nums中的索引
System.out.println(“二分法查看数组中某数的索引为:” + dichotomy(nums, num));
}

/**
* 二分法查找
*
* @param nums 数组
* @param num 查找的数
* @return 返回num索引,如果不存在返回-1
*/
public static int dichotomy(int[] nums, int num) {
// 数组长度必须大于零
if (nums != null && nums.length > 0) {

// 开始索引
int start = 0;
// 结束索引
int end = nums.length – 1;
// 中间索引
int center = (start + end) / 2;

// 开始索引不能大于结束索引
while (start <= end) {
// 取中间索引值比较,如果相同,返回该索引
if (num == nums[center]) {
return center;
}

// 如果值在center右边或左边,重新定位start或end,重新计算center值

if (num > nums[center]) {
start = center + 1;
}

if (num < nums[center]) {
end = center – 1;
}

center = (start + end) / 2;
}
}
return -1;
}
}

来自IT公司面试手册

下一篇:介绍一下JVM内存管理的机制

上一篇:如何解决Port 8080 is already is use的问题

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题