折半查找java_JAVA一个折半查找的程序

展开全部

这个是我刚写,在给62616964757a686964616fe59b9ee7ad9431333363383463出代码之前,我先声明一下,至于你说的时间复杂度对我来说,是天书,我不懂

我只知道用循环的时候,谁用的次数少,能找出东西,谁就快!

这个是百度到的你所问的折半复杂度:O(log2n),倘若你真是大神着迷这个,你不妨看看算法导论!

对于目前我来说,我就只认一个理,谁快而且能找的准谁就好用!

下面我用折半查找,和普通查找同时查找一个数字的时候用的次数对比,一目了然!

说实话,我也是初学者,而且对于数组这块,排序,我甚是着迷,感觉这些原创大脑真的厉害...非常佩服!

闲话少说,上代码:声明下这个我个人原创for二分查找呵呵:public class BinarySearch

{

public static void main(String[] args)

{

System.out.println("\n\t\t==========折半查找算法==========\n");

int[] arr={11,25,36,44,46,51,60,61,62,63,75,79,88};

System.out.println("目标索引位置:"+init(arr,62)+"\n");

System.out.println("目标索引位置:"+init1(arr,62)+"\n");

}

//折半查找!

private static int  init(int[] arr,int a)

{

int tem=-1,n=0;

for (int t=0,w=arr.length-1,z=(w+t)/2;t<=w;)

{

n++;

if(a>arr[z])

t=z+1;

else if(a

w=z-1;

else if (a==arr[z])

{

tem=z;

break;

}

else

break;

z=(w+t)/2;

}

System.out.println("二分查找耗时n="+n+"次");

return tem;

}

//普通查找!

private static int init1(int[] arr,int a)

{

int tem=-1,n=0;

for (int i=0;i

{

n++;

if (a==arr[i])

{

tem=i;

break;

}

}

System.out.println("普通查找耗时n="+n+"次");

return tem;

}

}

e0ab77ed77b8ae5855b0934bf7310a8e.png

这里有个博客专门对算法解析:还算比较通俗易懂的,你可以参考看看:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值