总结 数据结构:二分查找法15/4/21

总结 数据结构:二分查找法15/4/21

数据结构:二分查找法

代码展示:

package erfenfa;

public class OrdArray {

private long[] a;
private int nElems;

//构造方法 给数组a 和 nElems初始化
public OrdArray(int max) {

// TODO Auto-generated constructor stub
a = new long[max];
nElems = 0;
}

 

//获取数组中值得个数
public int size(){

return nElems;
}

//查找方法

public int find(long searchKey){

int lowerBound = 0; // 数组的第一个
int upperBound = nElems -1;  //数组的最后一个
int curIn;  //中间值
while(true){

curIn = (lowerBound + upperBound) /2;
if(a[curIn]==searchKey){

return curIn; //查找成功
}else if(lowerBound>upperBound){

return nElems;  //查找失败,返回数组中数据的个数
}else {

if(a[curIn]<searchKey){  // 二分法中的细节代码
lowerBound = curIn+1;
}else{

upperBound = curIn-1;
}
}
}

}

 

//插入
public void insert(long value){

int j;
for(j=0;j<nElems;j++){

if(a[j]>value){

break;
}
}
for(int i=nElems;i>j;i–){

a[i] = a[i-1];
}
a[j] = value;
nElems++;
}

 

//删除
public boolean delete(long value){

int key = find(value);//先查找是否存在要删除的数据

if(key==nElems){

return false;    //删除数据不存在
}else{

for(int i = key;i<nElems;i++){

a[i]=a[i+1];
}
nElems–;
return true;
}
}

 

//打印全部
public void display(){

for(int i =0;i<nElems;i++){

System.out.println(a[i]+””);
}
}
}

 

—————————————-分割线——————————————————

package erfenfa;

public class OrderedApp {

public static void main(String[] args) {

OrdArray ard = new OrdArray(100);
ard.insert(77);
ard.insert(99);
ard.insert(44);
ard.insert(55);
ard.insert(22);
ard.insert(88);
ard.insert(11);
ard.insert(00);
ard.insert(66);
ard.insert(33);
if(ard.find(33)!= ard.size()){

System.out.println(“查找成功”);
}else{

System.out.println(“查找失败”);
}

ard.delete(00);
ard.delete(33);
ard.display();

}

}

转载于:https://www.cnblogs.com/yydeyi/p/4448527.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109477.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • toArray方法总结

    toArray方法总结toArray方法涉及java的泛型,反射,数组的协变,jvm等知识。Java标准库中Collection接口定义了toArray方法,如果传入参数为空,则返回Object[]数组,如果传入参数为T[],则返回参数为传入参数的运行时类型。以下是ArrayList的实现:

    2022年5月15日
  • JS后退一页

    JS后退一页Javascript返回上一页:1.history.go(-1),返回两个页面:history.go(-2);2.history.back().3.window.history.forward()返回下一页4.window.history.go(返回第几页,也可以使用访问过的URL)例:向上一页response.Write(“”) response.W

    2022年7月25日
  • C语言 neutralize函数,三种常用分子模拟软件绍.doc

    C语言 neutralize函数,三种常用分子模拟软件绍.doc三种常用分子模拟软件绍三种常用分子模拟软件介绍一、NAMD  NAMD(NAnoscaleMolecularDynamics)是用于在大规模并行计算机上快速模拟大分子体系的并行分子动力学代码。NAMD用经验力场,如Amber,CHARMM和Dreiding,通过数值求解运动方程计算原子轨迹。  1.软件所能模拟的体系的尺度,如微观,介观或跨尺度等  微观。  是众多md软件中并行处理…

    2022年5月25日
  • VIF检验相关性「建议收藏」

    VIF检验相关性「建议收藏」VIF可以用来度量多重共线性问题,VIFj=11−Rj2\quad\mathrm{VIF}_{j}=\frac{1}{1-R_{j}^{2}}VIFj​=1−Rj2​1​式子中,Rj2R_{j}^{2}Rj2​是第jjj个变量在所有变量上回归时的确定系数。如果VIF过大(比如大于5或10),则意味着存在多重共线性问题。#数据df=pd.read_excel(io=’数据.xlsx’,sheet_name=0,usecols=range(1,5))#务必注意:一定要加上常数项,#如果没

    2022年4月28日
  • wait方法和notify方法_wait和notify的作用

    wait方法和notify方法_wait和notify的作用    为什么wait和notifyAll(notify)必须要使用synchronized?synchronized(object){object.wait();} synchronized(this){this.wait();} synchronizedfun(){this.wait();}     如…

    2022年9月6日
  • symbian http 联网时 不弹出接入点框「建议收藏」

    symbian不弹出接入点:目前在五版的5800xm5235测试通过。记录一下voidCHttpEngine::SetupConnectionL(){if(iConnectionSetupDone){//ConnectionsetupisdoneUser::Leave(KErrAlreadyExists);}if(IsA…

    2022年4月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号