折半查找数组元素的下标(java)

1.用折半查找数组元素的下标 
2.但前提是数组已经排序好的
3.例:
public static void main(String ars []){    
    int [] number=new int []{2,6,9,45,65,88};
}
publci staic int getIndex(int [] arr,int key){
    int min=0,max=arr.length,mid;
    while(min<=max){
            mid=(min+max)>>1;
            if(key>arr[mid]){
                   min=mid+1;         
            }
             else if(key<arr[mid]){
                    max=mid-1;
               }
                else {
                    return mid;
                 }    
        }
    return -1; //要查找 的数据没有在数组 中
}

时间: 2024-10-12 20:08:47

折半查找数组元素的下标(java)的相关文章

php折半查找(数组必须为有序)

$arr=array('1','7','9','11','20','23','33','44','50');     $len=count($arr);      $low=0;$high=$len-1;         while($low<$high)    {                  $mid=intval(($low+$high)/2);        echo $mid.'<br/>';         if($arr[$mid]>9)         {  

折半查找数组中某一元素(二分法查找)

#include <stdio.h> int bin_search(int arr[], int size, int key) { int left=0; int right=size-1; while (left<=right) { int mid=(left+right)/2; if(arr[mid]>key) right=mid-1; else if(arr[mid]<key) left = mid + 1; else { return mid;//如果能找到,则返回m

1117: 查找数组元素

题目描述 编写程序,输入n(1<=n<=10),输入n个整数构成一个数组,输入整数x,在这个数组中查找x是否存在,如果存在,删除x,后面元素依次向前添补空位,并输出删除元 素后的数组.如果不存在,输出"Not Found". 定义一个查找函数find(),在数组a中查找x,若找不到函数返回-1,若找到返回x的下标,函数原型如下: int find(int a[], int n, int x); 然后在main()中,先调用函数find(),若查找失败输出"Not

zzuli oj 1117 查找数组元素

题意描述:编写程序,输入n(1<=n<=10),输入n个整数构成一个数组,输入整数x,在这个数组中查找x是否存在,如果存在,删除x,后面元素依次向前添补空位,并输出删除元素后的数组.如果不存在,输出"Not Found".输入第一行是一个正整数n(1<=n<=10):第二行是n个整数,构成一个数组:第三行是一个整数x,表示待查找元素.输出删除元素后的数组,每个元素占4列,右对齐.如果不存在,输出"Not Found".如果数组中有多个x,只删

php查找数组元素,提速

1.in_array(),判断数组中元素是否存在 bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) 第一个参数:$needle,待搜索的字符串,是区分大小写的 第二个参数:用阿里比较的数组 第三个参数默认是false:true会判断数据类型 2. 当数据量较大时,10万左右in_array()效率就低了,大概2秒 3.提高查找元素效率的方法 先使用array_flip,进行键值互换,再用isse

(二十三)查找数组元素

class Demo5 { public static void main(String[] args) { int[] a = new int[]{133,24,151,253,654,37,24}; int key = 24; int index = find(a,key); System.out.println("index=" + index); } //查找:一个数再数组中第一次粗线的下标,不存在输出-1: //结果:下标或-1 //参数:数组,查找的数 public sta

数组元素查找(查找指定元素第一次在数组中出现的索引)

import java.util.Scanner; /* * 需求:数组元素查找(查找指定元素第一次在数组中出现的索引) * (1)给定数组int[] arr={5,7,3,2,5} * (2)要查询的元素通过键盘录入的方式确定 * (3)定义一个查找数组元素第一次出现位置的方法(注:要查找的元素就是键盘录入的数据) * *分析: * A:定义数组int[] arr={5,7,3,2,5}; * B:键盘录入一个被查询的数据 * C:写方法实现查找指定元素在数据中第一次出现的索引 * 遍历数组,

C语言数组元素下标为何从0开始

很多同学可能在学习数组时会有这个疑问,下标为什么不从1开始呢?从1开始不是更符合大家的日常习惯吗?生活中我们通常说第1个,而不是第0个.的确,有些计算机语言如早期的Pascal语言,数组元素的下标是从1开始的.难道是C语言故意要与众不同?要弄清楚这个问题,得先看一下计算机底层是怎样处理数组元素的.我们先编写了一个小程序,然后在visual studio中对其进行了反汇编.源程序和反汇编后的部分代码如下: 源程序: int arr[5];  //一个全局数组 int main() { int i;

算法:顺序查找与折半查找

资料摘自:<数据结构c++语言描述> typedef int DataType; //顺序查找算法 //用顺序查找在n元数组list中查找与key等值的元素,返回该数组元素的下标 //若未找到,则返回-1 int SeqSearch(DataType List[], int n, DataType key) { for(int i = 0; i < n; i++) { if(List[i] == key) { return i; } } return -1; } /* *顺序查找的复杂度