java二分查找法

今天用java二分查找法写了一个测试小例子。


public class Text {

/**
* @param args
*/
public static void main(String[] args) {

binaryChop(78);

}
/*
* java二分查找法
*/
public static void binaryChop(int search) //search参数传入要查找的元素
{
int a[]={1,5,2,73,26,21,78};
for(int i=0;i<a.length;i++) //用冒泡法给数值排序
{
for(int j=0;j<a.length;j++)
{
if(a[i]<a[j]) //有小到大排序,如果想由小到大,改为a[i]>a[j]即可
{
int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
}
// Arrays.sort(a); //利用java自带工具排序

for(int i:a) //打印出排序过的数值
{
System.out.print(i+" ");
}
System.out.println();

int lower=0; //记录第一个元素
int upper=a.length-1;
int index=-1;
while(lower<=upper)
{
index=(lower+upper)/2; //记录中间元素,用两边之和除2
int currentValue=a[index];
if(currentValue==search){ //如果得到的数与要查找的数相等则break退出;
break;
}else if(currentValue<search){ //如果得到的数要小于查找的数、就用下标加1;否则减1
lower=index+1;
}else{
upper=index-1;
}
}if(lower<=upper)
{
System.out.println(search+"在数组中的第:"+(index+1)+"位");
}else
{
System.out.println("里面没有这个元素!");
}
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值