本文目录一览:
- 1、java 二分法排序
- 2、怎么计算java二分法查找的比较次数
- 3、java程序 二分法查找一个数
- 4、Java基础 递归二分法
- 5、java程序 二分法查找一个数
- 6、java二分法查找重复数字的下标?
java 二分法排序
首先取第一个12,其它元素比12小的放左边,比12大的放右边,这样2,11,12,56,77,34
原来的数组就变成了两个部分2,11,12和56,77,34
两个方法按照上面的步骤递归排,比如第二部分56,77,34
取第二部分的第一个56,比它小的放左边,比它大的放右边,这样34,56,77
这样1个数组,分成2各部分,再分成4各部分,一直下去,直到排完
要用到递归,二分法就是这样
怎么计算java二分法查找的比较次数
您好,我来为您解答:
算法:当数据量很大适宜采用该方法。采用二分法查找时,数据需是有序不重复的。 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止。
希望我的回答对你有帮助。
java程序 二分法查找一个数
public
class
Lookup
{
/**
*
@param
args
*/
public
static
void
main(String[]
args)
{
//
TODO
Auto-generated
method
stub
/**
*
二分法查找
*/
int
a[]={23,45,98,100,110,120,140};
int
search=120;//记录要查找的元素
int
lower=0;//记录第一个元素
int
temp=a.length-1
;
int
index=-1;
while(lower=temp){
index
=
(lower+temp)/2;//记录中间元素,用两边之和除2.
int
currentValue=a[index];
if(currentValue==search){//如果得到的数与要查找的数相等则break退出;
break;
}else
if(currentValuesearch){//如果得到的数要小于查找的数、就用下标加1;否则减一
lower=index+1;
}else{
temp
=
index-1;
}
}
if(lower=temp){
System.out.println(search+"在数组中第:"+(index+1)+"位");
}else{
System.out.println("里面没有这个元素");
}
}
}
Java基础 递归二分法
如果都不满足条件呢 可能你能确定一定会满足其中一个 可是程序不能确定是不是一定会满足其中一个 又不知道如果不满足要返回什么 所以报错啦
java程序 二分法查找一个数
public class Lookup {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 二分法查找
*/
int a[]={23,45,98,100,110,120,140};
int search=120;//记录要查找的元素
int lower=0;//记录第一个元素
int temp=a.length-1 ;
int index=-1;
while(lower=temp){
index = (lower+temp)/2;//记录中间元素,用两边之和除2.
int currentValue=a[index];
if(currentValue==search){//如果得到的数与要查找的数相等则break退出;
break;
}else if(currentValuesearch){//如果得到的数要小于查找的数、就用下标加1;否则减一
lower=index+1;
}else{
temp = index-1;
}
}
if(lower=temp){
System.out.println(search+"在数组中第:"+(index+1)+"位");
}else{
System.out.println("里面没有这个元素");
}
}
}
java二分法查找重复数字的下标?
package pers.ly.javase.algorithm;import java.util.Arrays;/**
* 二分法查找
* @author: Lu Yang
* @date: 2019-01-23 10:50:37
*
*/public class BinarySearch {
public static void main(String[] args) {
Integer[] arr = {10,50,30,40,10,80,90,70,60,40,100,10};
// 数组排序 - 二分法必要条件
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(binarySearch(arr,50));
}
/**
*
* @author: Lu Yang
* @date: 2019-01-23 11:44:01
* @param arr 数组
* @param value 数组元素值
* @return
*
*/
public static Integer binarySearch(Integer[] arr, Integer value) {
// 定义数组开始位置
Integer start = 0;
// 定义数组结束位置(arr.length是计算数组从1开始的总长度,arr.length-1计算数组从0开始的总长度)
Integer end = arr.length - 1;
// 开始位置 = 结束位置
while (start = end) {
// 定义数组的中心位置(开始位置+结束位置)/2
Integer mid = (start + end) / 2;
// 判断数组mid位置值(当前数据中间位置值)是否小于传过来的值
if (arr[mid] value)
// 如果小于传过来的值,数组开始位置则定义中间位置下标+1
start = mid + 1;
// 判断数组mid位置值(当前数据中间位置值)是否大于传过来的值
if (arr[mid] value)
// 如果大于传过来的值,数组结束位置则定义中间位置下标-1
end = mid - 1;
if (arr[mid] == value)
return mid;
}
return -1;
}}