今天用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("里面没有这个元素!");
}
}
}
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("里面没有这个元素!");
}
}
}