• 二分查找法解题思路


    二分查找法解题思路
     每次从数组的中间,比较 需要找的 值,如果小于中位数,则在数组前一半找,如果大于,则在数组后一半找
    
    * 1、首先二分查找法需要先排序
    * 2、所以 传参是开始下标,结束下标,数组
    * 3、必须先用首尾下标 计算出他的 中点下标
    * 4、计算是否 大于中位数 或者 小于 中位数,执行 mid +1 或者 mid -1

    1. /**
    2. * 二分查找法接题思路
    3. * 每次从数组的中间,比较 需要找的 值,如果小于中位数,则在数组前一半找,如果大于,则在数组后一半找
    4. *

    5. * 1、首先二分查找法需要先排序
    6. * 2、所以 传参是开始下标,结束下标,数组
    7. * 3、必须先用首尾下标 计算出他的 中点下标
    8. * 4、计算是否 大于中位数 或者 小于 中位数,执行 mid +1 或者 mid -1
    9. *
    10. * @param args
    11. */
    12. public static void main(String[] args) throws IOException {
    13. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    14. String str = br.readLine();
    15. String findStr = br.readLine();
    16. Integer arr[] = new Integer[str.length()];
    17. for (int i = 0; i < str.length(); i++) {
    18. arr[i] = Integer.valueOf(str.charAt(i));
    19. }
    20. Arrays.sort(arr);
    21. // 开始查找
    22. Integer index = getErFen(arr, Integer.valueOf(findStr.charAt(0)), 0, arr.length - 1);
    23. System.out.println(index);
    24. System.out.println();
    25. }
    26. private static Integer getErFen(Integer[] arr, Integer findStr, int start, int end) {
    27. while (start <= end) {
    28. int mid = (start + end) / 2;
    29. if (arr[mid] == findStr) {
    30. return findStr;
    31. } else if (arr[mid] < findStr) {
    32. start = 1 + mid;
    33. } else if (arr[mid] > findStr) {
    34. end = mid - 1;
    35. }
    36. }
    37. return -1;
    38. }

  • 相关阅读:
    Spring 整合嵌入式 Tomcat 容器
    eNSP网络实验
    数位DP 上 day44
    Milvus向量数据库检索
    我的互联网秋招经历
    find_element_by_id()方法的使用上。这个方法已经被弃用,建议使用find_element()方法替代。
    Allegro给pin添加花连属性操作指导
    Pikachu漏洞练习平台之XXE(XML外部实体注入)
    【设计模式】26.结构型模式-代理模式(Proxy)
    Code For Better ---- 拥抱TensorFlow 拥抱未来
  • 原文地址:https://blog.csdn.net/ke1ying/article/details/126323728