• 数组的查找操作


    /*
    数组的查找操作
    
    练习:有一个有序的数组,将要将一个元素插入到该数组中,还要保证该数组是有序的
    如何获取该元素获取数组中的位置
    */
    
    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;
        }
    }
  • 相关阅读:
    mem 预留内存
    关于内核反汇编,同时显示源文件
    读些笔记
    platform设备驱动
    glut 右键子菜单
    获取HINSTANCE
    window窗口样式style
    opengl 直线拾取
    glut弹出式菜单
    读取大恒采集卡c++代码
  • 原文地址:https://www.cnblogs.com/cailingsunny/p/4694091.html
Copyright © 2020-2023  润新知