package array;
/**
* 二分查找算法
* @author 杨伦亮
* 1:14:41 AM
*/
public class HighArray2 implements Find{
private long[] a;
private int nElement;
/**构建函数*/
public HighArray2(int max) {
System.out.println("注意:必须是规则有序的队列!");
a = new long[max];
nElement = 0;
}
/*
* (non-Javadoc)
* @see array.Find#find(long)
*/
public Object find(long searchValue)throws Exception{
int lowerPoint=0;
int upperPoint=nElement-1;
int curIn,time=0;
try{
while(true){
curIn=(lowerPoint+upperPoint)/2;
if(a[curIn]==searchValue) return curIn;
else if(lowerPoint>upperPoint) return nElement;
else {
if(a[curIn]<searchValue){
lowerPoint=curIn+1;
}else{
upperPoint=curIn-1;
}
}
time++;
}
}catch (Exception e) {
}finally{
System.out.println("run Times:"+time);
}
throw new Exception("can't find");
}
/**增加值*/
public void insert(long value){
a[nElement]=value;
nElement++;
}
public int getSize(){
return nElement;
}
/**删除指定值*/
public boolean delete(long value){
int j;
for (j = 0; j < nElement; j++) {
if(a[j]==value){
break;
}
}
if(j==nElement){
return false;
}else {
for (int k = j; (k+1) < nElement; k++) {
a[k]=a[k+1];
}
nElement--;
return true;
}
}
/**显示*/
public void display(){
for (int i = 0; i<nElement; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
// TODO Auto-generated method stub
int maxSize=100;
HighArray2 array=new HighArray2(maxSize);
for (int i = 0; i < maxSize; i++) {
array.insert(i);
}
array.display();
int searchValue=35;
Object object=array.find(searchValue);
System.out.println(searchValue+" Fount at \t"+object.toString());
}
}
分享到:
相关推荐
#### 1.3 二分查找模板 文档提供了二分查找的一个模板,代码如下: ```python def binary_search(list, item): low = 0 high = len(list) - 1 while low mid = int((low + high) / 2) guess = list[mid] if ...
1.3 二分查找法 二分查找法是一种在有序数组中查找特定元素的高效算法。它通过不断将搜索区间减半,快速定位目标元素。二分查找的时间复杂度为O(log n),适用于大量数据的快速检索。 1.4 冒泡排序法 冒泡排序是一种...
**1.3 二分查找** - **基础版**:二分查找是在有序数组中查找指定元素的高效算法。它通过不断将搜索区间减半来缩小搜索范围,直至找到目标元素或确定不存在。 - **改变版**:在基本二分查找的基础上,可以通过调整...
##### 1.3 二分查找(`Arrays.binarySearch()`) `Arrays.binarySearch()`方法可以实现高效的二分查找。这种方法要求数组事先已经排序。该方法返回查找元素在数组中的索引位置,如果未找到则返回负数。 **示例代码...
根据给定的信息,本文将对数据结构中的查找技术进行详细解析,主要聚焦于两种常见的查找方法:顺序查找和二分查找。这两种查找方法是数据结构与算法领域中的基础且重要的概念,广泛应用于各种编程场景中。 ### 一、...
本文档分为三个主要部分: • 第一部分:关于CMMI开发模型 ...• 附录C:CMMI版本1.3项目的参加者,包含参加CMMI-DEV 1.3版开发的团队成员名单。 • 附录D:术语表,定义了CMMI-DEV中使用的很多术语。
V1.3 新增了以下功能: 1.动画移动小人, 可用鼠标或键盘移动小人和箱子 2.调试工具条,可以显示坐标等...7.为了减少内存使用,用自增长二分查找的数组代替std::map. 8.下载不需要分数. 注:V1.1以后版本不支持V1.0的文件.
1.按行业索引:按企业分类查找企业,亦可按 一级分类+省份 或 一级分类+二级分类+省份 或 一级分类+省份+市县或 一级分类+二级分类+省份+市县 的组合方式来查找企业。 2.按地区索引:按企业所在省市查找企业,亦可按...
1.3 栈 1. 栈的基本概念 栈(stack)是一种特殊的线性表,是限定只在一端进行插入与删除的线性表。 在栈中,一端是封闭的,既不允许进行插入元素,也不允许删除元素;另一端是开口的,允许插入和删除元素。通常称...
这个问题的关键在于如何高效地进行查找,我们采用了二分查找法,大大提高了效率。 1.3 已做但未AC的题目 虽然我尝试了多个解决方案,但POJ2503题目尚未完全解决。这可能是因为我在设计算法时遇到了一些挑战,或者在...
对于文件属性,如名称、描述、标签等,用户可以随时进行调整,以便更好地管理和查找文件。 除了上述基本功能,此系统可能还包括以下特性: - **权限管理**:支持设置不同用户的访问权限,比如读取、写入和删除,...
对于开发者而言,这是一个宝贵的资源,他们可以通过源代码了解程序的工作原理,进行二次开发,以满足特定的需求或集成到现有的网站架构中。源码的开放性也使得社区能够共享各种插件和模版,丰富了程序的可扩展性。 ...
- **快速查询**:ip2region利用二分搜索算法,能够在毫秒级别内完成IP地址到地理位置的映射查询,显著提高了查询效率。 - **离线定位**:无需依赖互联网,只需将数据库文件存储在本地,即可进行IP地址的定位,确保...
二,企业会员主要功能 1、发布修改招聘信息 2、对人才库的简历进行筛选,修改,审核,删除 3、修改注册资料 4、查找人才 三,后台管理员主要功能 1、对企业发布的招聘信息管理 2、对人才发布的求职信息管理 ...
1.1.10 二分查找 28 1.1.11 展望 30 1.2 数据抽象 38 1.2.1 使用抽象数据类型 38 1.2.2 抽象数据类型举例 45 1.2.3 抽象数据类型的实现 52 1.2.4 更多抽象数据类型的实现 55 1.2.5 ...
3)系统提智能挖掘算法可以帮助您从大量分档中找出最符合的文档,节省您的阅读、下载效率; 4)文档的各种属性可以一目了然,如下载费用、文档大小、网友评分、下载量、网友评价等; 5)搜索文档结果可以直接在线...
以二分查找为例,这是一种基于分治策略的经典算法,适用于有序数据集合的搜索。 在二分查找中,我们需要在一个已排序的列表中寻找特定元素。算法通过不断将搜索范围减半来加速查找过程。初始时,选择列表中间的元素...
二分查找在有序数组中高效,而哈希查找通过散列函数实现近乎即时的查找,但需要额外的空间来存储哈希表。 3. **图算法**:图是表示对象之间关系的数据结构,常见算法有深度优先搜索(DFS)和广度优先搜索(BFS),...
Esuper超级文件管理器1.3.7.1高级版是一款专为安卓设备设计的专业工具,它提供了一整套强大且易用的功能,帮助用户更有效地组织、查找和管理手机中的文件。 首先,Esuper超级文件管理器的核心功能是文件浏览与操作...