zoukankan      html  css  js  c++  java
  • 数组的查找操作

    /*
    数组的查找操作
    
    练习:有一个有序的数组,将要将一个元素插入到该数组中,还要保证该数组是有序的
    如何获取该元素获取数组中的位置
    */
    
    class  ArrayTest4
    {
        public static void main(String[] args) 
        {
            int[] arr={1,3,5,9,32,45};
            int index=getIndex_2(arr,9);
            System.out.println("index="+index);
        }
        public static int getIndex_2(int[] arr,int key)
        {
            int min=0,max=arr.length-1,mid;
            while(min<=max)  //min,max之间有距离就可以折半
            {
                mid=(max+min)>>1;
                if(key>arr[mid])
                    min=mid+1;
                else if(key<arr[mid])
                    max=mid-1;
                else 
                    return mid;
            }
            return min;
    
        }
        //折半的第二种方式
        public static int halfSearch_2(int[] arr,int key)
        {
            int min=0,max=arr.length-1,mid;
            while(min<=max)  //min,max之间有距离就可以折半
            {
                mid=(max+min)>>1;
                if(key>arr[mid])
                    min=mid+1;
                else if(key<arr[mid])
                    max=mid-1;
                else 
                    return mid;
            }
            return -1;
        }
        /*
        折半查找,提高效率,但是必须保证该数组时有序数组
        */
        public static int halfSearch(int[] arr,int key)
        {
            int min,max,mid;
            min=0;
            max=arr.length-1;
            mid=(max+min)/2;
            while(arr[mid]!=key)
            {
                if(key>arr[mid])
                    min=mid+1;
                else if(key<arr[mid])
                    max=mid-1;
                mid=(max+min)/2;
                if(min>max)
                    return -1;
            }
            return mid;
        }
        //定义功能,获取key第一次出现在数组中的位置,如果返回-1,那么代表该key在数组中不存在
        public static int getIndex(int[] arr,int key)
        {
            for(int x=0;x<arr.length;x++)
            {
                if(arr[x]==key)
                    return x;
            }
            return -1;
        }
    }
  • 相关阅读:
    [Algorithms] Counting Sort
    [LeetCode] Sort Colors
    [LeetCode] Contains Duplicate III
    [LeetCode] Contains Duplicate
    [LeetCode] Two Sum II
    [LeetCode] Linked List Cycle II
    [LeetCode] Linked List Cycle
    [LeetCode] Longest Palindromic Substring
    [LeetCode] Two Sum
    [LeetCode] Rectangle Area
  • 原文地址:https://www.cnblogs.com/cailingsunny/p/4694091.html
Copyright © 2011-2022 走看看