一维数组之二分查找
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一维数组之二分查找相关的知识,希望对你有一定的参考价值。
/**
* @param args
* @author wangxianpeng
* 工作原理 :
* 二分查找法 又称折半查找法 。将数组中间位置记录的关键字与查找的关键字进行比较,
* 如果两者相等 则查找成功; 否则利用中间位置记录将数组分成前,后两个子数组
* ,如果中间位置记录的关键字大于查找关键字,则进一步查找前面的子数组
* ,否则 进一步查找后面的子数组。重复以上的过程,直到找到或找不到为止。
*
* 步骤:
* 1. 创建数组 array并静态初始化。
*
* 2. 提示用户 属于要查找的数 number
*
* 3.声明开始下标start, 结束下标 end ,中间下标 middle并赋值 。
*
* 4.声明下标号 index 并赋值为-1;
*
* 5. 找出中间坐标的公式是 middle = (start + end) / 2。
*
* 6.if (number == array[middle]) 则把下 index = middle; break;
*
* 7.if(number > array[middle]) 则 start = middle +1;
*
* 8.if(number < array{middle]) 则 end = middle -1;
*
* 采用while 循环 条件是 (start <= end )
*
* 输出结果 :如果index =-1 则没找到
* 否则 输出下标
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("轻输入一个数");
int Number = input.nextInt();
int []array = {1,2,3,4,5,6,7,8,9};
int start = 0;
int end= array.length -1;
int middel = 0;
int index = -1;
while (start <= end){
middel = (start + end ) / 2;
if(Number == array[middel]){
index = middel+1;
break;
}
else if(Number > array[middel]){
start = middel + 1;
}
else {
end = middel - 1 ;
}
}
if(array(Number) == -1){
System.out.println("not find");
}
else {
System.out.println("find at "+ array(Number));
}
}
以上是关于一维数组之二分查找的主要内容,如果未能解决你的问题,请参考以下文章