Java针对数组的普通查找法和二分查找法

下面是针对数组的普通查找法和二分查找法的示例代码
  1. packagecom.jadyer.sort;
  2. /**
  3. *数组查找方式
  4. *@detail这里演示了普通查找法和二分查找法
  5. */
  6. publicclassArraySearch{
  7. publicstaticvoidmain(String[]args){
  8. intcommonResult=commonSearch(newint[]{1,5,6,7,4,3,9,11,13,14,16,19,21},9);
  9. intbinaryResult=binarySearch(newint[]{1,3,4,6,7,8,9,12,15,17,18,20,22},8);
  10. System.out.println("二分查找法:"+binaryResult);
  11. System.out.println("普通查找法:"+commonResult);
  12. }
  13. /**
  14. *普通查找法
  15. *@detail该方式最好理解,同时效率也最低
  16. */
  17. publicstaticintcommonSearch(int[]array,intvalue){
  18. for(inti=0;i<array.length;i++){
  19. if(value==array[i]){
  20. returni;//返回该元素在数组中的下标
  21. }
  22. }
  23. return-1;//不存在该元素则返回-1
  24. }
  25. /**
  26. *二分查找法
  27. *@detail要求数组有序,升序或降序均可
  28. */
  29. publicstaticintbinarySearch(int[]array,intvalue){
  30. intlow=0;//最小元素值的下标
  31. inthigh=array.length-1;//最大元素值的下标
  32. intmiddle;//中间元素的下标
  33. while(low<=high){
  34. middle=(low+high)/2;
  35. for(inti=0;i<array.length;i++){
  36. System.out.print(array[i]);
  37. if(i==middle){
  38. System.out.print("#");//在元素后面用#号标识其为中间元素
  39. }
  40. System.out.print("");//各元素间用空格隔开
  41. }
  42. System.out.println();
  43. if(value==array[middle]){
  44. returnmiddle;
  45. }
  46. if(value<array[middle]){
  47. high=middle-1;//右侧的不要了
  48. }
  49. if(value>array[middle]){
  50. low=middle+1;//左侧的不要了
  51. }
  52. }
  53. return-1;//不存在该元素则返回-1
  54. }
  55. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值