二分查找数组必须为有序数组,查找速度比无序数组快,插入速度比无序数组慢。
查找次数为数组长度的开方。
方法:
public static int find(long searchKey) {
long[] arr = new long[100];
arr[0] = 11;
arr[1] = 22;
arr[2] = 33;
arr[3] = 44;
arr[4] = 55;
arr[5] = 66;
arr[6] = 77;
arr[7] = 88;
arr[8] = 99;
arr[9] = 100;
int countElems = 10;
int lowerElem = 0;
int upperElem = countElems - 1;
int currIn;
while (true) {
currIn = (lowerElem + upperElem) / 2;
if (arr[currIn] == searchKey) {
return currIn;
} else if (lowerElem > upperElem) {
return countElems;
} else {
if (arr[currIn] < searchKey) {
lowerElem = currIn + 1;
} else {
upperElem = currIn - 1;
}
}
}
}
调用:
public static void main(String[] args) {
long a = find(111);
System.out.println(a);
}
分享到:
相关推荐
折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)
二分查找算法,二分查找算法课件,二分查找算法PPT
二分查找_测试
二分查找算法
简单地实现了二分查找的可视化。界面很简单就包括两个部分:界面左侧是可视化查找部分,右侧是二分查找的代码。 程序的关键点主要有两点: 1. 如何在页面上表示出查找程序的运行过程。 2. 如何将排序程序的运行...
1.二分查找又称为折半查找,它要求要查找的顺序表必须是有序表,即表中结点按关键字有序.并且要用顺序存储结构。 基本思想是:首先将给定值key与表中中间位置记录的关键字相比较,若二者相等,则查找成功,否则...
二分查找 C语言语言源代码 用递归写的 C语言入门经典代码 值得收藏
//二分查找 #include const int MAXN=10010; using namespace std; //二分查找,递归实现 int binarySearch(int a[],int low,int high,int key) { //查找某元素是否在数组中,若存在,则返回下标,否则...
二分查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表...
二分查找
VB 二分查找 VB 二分查找 VB 二分查找
s[middle] 关键字小于中值 继续二分查找 并将上限改为middle BinarySearch s x low middle 1 ; else 关键字大于中值 继续二分查找 并将下限改为middle BinarySearch s x middle + 1 high ;">if high < low ...
二分查找ppt
一、实验目的: 熟悉各种查找算法及其复杂性,能够根据实际情况选择合适的存储结构。 二、实验要求: 1、掌握查找的基本方法。 2、提交实验报告,报告...编程分别对有序顺序表的顺序查找,二分查找算法进行实现。
int BinSearch(SeqList R,int n,KeyType k) /*二分查找算法*/ { int low=0,high=n-1,mid,count=0; while (low) { mid=(low+high)/2; printf("第%d次查找:在[%d,%d]中查找到元素R[%d]:%d\n",++count,low,high,...
文件读出数组进行选择排序和二分查找文件读出数组进行选择排序和二分查找java实现
设计一个程序,建立由有序序列R[0..n-1]进行二分查找产生的判定树,在此基础上完成如下功能: (1) 输出n=11时的判定树并求成功情况下的平均查找长度ASl (2) 通过构造判定树可以求得的成功情况下的平均查找长度...
C++ 二分查找法