zoukankan      html  css  js  c++  java
  • 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

        该题目可以采用二分的思想,查找该元素。实现如下:

    private static String find(int[] arr,int num) {
            int left = 0;
            int right = arr.length - 1;
            while (left <= right){
                if(num < arr[left]){   //未找到之应该插入到最开始位置
                    return "无该元素,应该被插入到:"+0+"号位置";
                }
                if(num > arr[right]){   //未找到之应该插入到最后位置
                    return "无该元素,应该被插入到:"+arr.length+"号位置";
                }
    
                int mid = (right - left + 1)/2 + left;
                if(arr[mid] == num){    //找到
                    return "该元素下标为:"+mid;
                }else if(arr[mid] > num){
                    right = mid - 1;
                }else {
                    left = mid + 1;
                }
                if(arr[mid] < num && arr[mid+1] > num){   //未找到之应该插入到中间某个节点(不用判断mid的合法性,第一个判断,就不会让mid > arr.length -1).
                    return "无该元素,应该被插入到:"+(mid+1)+"号位置";
                }
            }
            return null;
        }

    测试如下:

     int[] arr = {1,3,5,8,11,35,69};
            System.out.println(find(arr,0));
            System.out.println(find(arr,5));
            System.out.println(find(arr,20));
            System.out.println(find(arr,73));

  • 相关阅读:
    mysql-centos7部署mysql5.7.20
    tips-history添加命令的执行时间
    Maven核心概述
    Java动态代理
    JDBC(3)-数据库事务
    JDBC(2)-操作BLOB类型字段和批量插入
    redis+mysql读写方案
    Redis与Memcache区别最全整理【摘自百度】
    redis+mysql有几种用法?【摘录知乎】
    js 拷贝到剪贴板
  • 原文地址:https://www.cnblogs.com/128-cdy/p/12596139.html
Copyright © 2011-2022 走看看