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));

  • 相关阅读:
    Element节点
    Document节点
    ParentNode接口,ChildNode接口
    NodeList接口,HTMLCollection接口
    Node接口
    DOM概述
    Promise对象
    定时器
    IT常用日语
    配置JavaWeb开发环境
  • 原文地址:https://www.cnblogs.com/128-cdy/p/12596139.html
Copyright © 2011-2022 走看看