欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java数据结构之二分查找法 binarySearch的实例

程序员文章站 2024-04-01 23:23:58
java数据结构之二分查找法 binarysearch的实例 折半查找法,前提是已经排好序的数组才可查找 实例代码: public class binarys...

java数据结构之二分查找法 binarysearch的实例

折半查找法,前提是已经排好序的数组才可查找

实例代码:

public class binarysearch {
 int[] barr;
 
 public void setarr(int[] barr){
 this.barr=barr;
 }
 public static void main(string[] args) {
 int arrlength=16;
 int[] barr=new int[arrlength];
 system.out.println("数组:");
 barr=new int[]{72,31,13,94,85,27,64,71,19,55,49,40,8,70,17,13};
 for(int i=0;i<arrlength;i++){
  //barr[i]=(int)(math.random()*100);
  system.out.print(barr[i]+"  ");
 }
 
 system.out.println();
 system.out.println("排序:");
 
 quicksort qs=new quicksort();
 qs.setarr(barr);
 qs.quicksort(0, barr.length-1);
 
 for(int i=0;i<arrlength;i++){
  system.out.print(barr[i]+"  ");
 }
 
 binarysearch bs=new binarysearch();
 bs.setarr(barr);
 
 system.out.println();
 system.out.println("查找:");
 int val=bs.binarysearch(barr.length-1, 0, 13);
 system.out.println("查找:barr["+val+"]="+13);
 
 }
 
 int binarysearch(int max,int min,int val){//有重复的取的是第一个出现的位置
 int mid=(max+min)/2;
 if(val==barr[mid]){
  return mid;
 }
 else if(val>barr[mid]){
  return binarysearch(max,mid,val);
 }
 else if(val<barr[mid]){
  return binarysearch(mid,min,val);
 }
 return -1;//查找失败
 }
}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!