二分查找
来源:互联网 发布:英文电影配音软件 编辑:程序博客网 时间:2024/06/11 08:31
/*
* 二分查找,适用于有序数组。数组有N个元素,则需要的比较次数为:logN,以2为底
*/
package test;
class Array
{
private int[] array;
private int nElems;
public Array(int size)
{
array=new int[size];
nElems=0;
}
public void insert(int item)
{
int i;
int j;
for(i=0;i<nElems;i++)
if(array[i]>item)
break;
for(j=nElems;j>i;j--)
array[j]=array[j-1];
array[j]=item;
nElems++;
}
public int find(int key)
{
int lower=0;
int upper=nElems-1;
int mid;
while(true)
{
mid=(lower+upper)/2;
if(array[mid]==key)
return mid;
else if(lower>upper)
return nElems;
else
{
if(array[mid]>key)
upper=mid-1;
if(array[mid]<key)
lower=mid+1;
}
}
}
public boolean delete(int key)
{
int j=find(key);
if(j==nElems)
return false;
else
{
for(int i=j;i<nElems;i++)
array[i]=array[i+1];
nElems--;
return true;
}
}
public void display()
{
for(int i=0;i<nElems;i++)
System.out.print(array[i]+" ");
}
}
public class orderArray
{
public static void main(String[] args)
{
Array Arr=new Array(20);
for(int i=0;i<10;i++)
{
int n=(int)(java.lang.Math.random()*99);
Arr.insert(n);
}
Arr.display();
System.out.println("寻找");
int n=Arr.find(17);
System.out.println(n);
}
}
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- Struts2之通过commons-fileupload实现文件上传
- 内存模型
- 源码网站
- Java技巧:序列化的两种方式
- 与此同时
- 二分查找
- 曾经参加某公司的一道面试题--ASP.NET中如何防范SQL注入式攻击
- 提交异常java.lang.UnsupportedClassVersionError: Bad version number in .class file
- VC++的Unicode编程(转)
- ASP.NET AJAX(Atlas)和Anthem.NET——管中窥豹般小小比较
- 使用Java开源组件Atomikos开发分布式事务应用
- 常用简易JavaScript函数
- 觉得有必要来澄清几组重要概念
- .net全书学完后8月的安排表