当前位置:   article > 正文

二分查找java代码实现_二分查找java关键代码

二分查找java关键代码
  1. public static void main(String[] args) {
  2. Integer[] arr = new Integer[]{12,15,20,36,45,66,72,81,90};
  3. int des = 22;
  4. int search = binarySearch(arr, des);
  5. System.out.println(search);
  6. int recursive = binarySearchRecursive(arr, 0 , arr.length-1 ,des);
  7. System.out.println(recursive);
  8. }
  9. /**
  10. * 二分查找 非递归 如果数组中不存在要查询的数返回-1
  11. *
  12. * @param arr
  13. * @param des
  14. * @return
  15. */
  16. public static int binarySearch(Integer[] arr, int des){
  17. int start = 0;
  18. int end = arr.length-1;
  19. while (start <= end) {
  20. int middle = (( end - start )>>1)+ start;
  21. if (des == arr[middle]) {
  22. return middle+1;
  23. }else if (des < arr[middle]) {
  24. end = middle-1;
  25. }else if (des > arr[middle]) {
  26. start = middle+1;
  27. }
  28. }
  29. return -1;
  30. }
  31. /**
  32. * 二分查找 递归方式 如果数组中不存在要查询的数返回-1
  33. *
  34. * @param args
  35. * @param des
  36. * @return
  37. */
  38. public static int binarySearchRecursive(Integer[] args ,int start, int end, int des){
  39. int middle = -1;
  40. if (start <= end) {
  41. middle = (start + end) >> 1;
  42. if (des == args[middle]) {
  43. return middle+1;
  44. }else if (des < args[middle]) {
  45. end = middle -1;
  46. return binarySearchRecursive(args, start, end, des);
  47. }else if (des > args[middle]) {
  48. start = middle +1;
  49. return binarySearchRecursive(args, start, end, des);
  50. }
  51. }
  52. return middle;
  53. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/977698
推荐阅读
相关标签
  

闽ICP备14008679号