总结 数据结构:二分查找法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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • fread函数的使用「建议收藏」

    fread函数的使用「建议收藏」fread函数的原型是:size_tfread(void*ch,size_tmode,size_tnumber,FILE*fp)。第一个参数是数组的地址;第二个参数是数据类型的大小;第三个参数是需要读取多少个这样的数据类型;第四个参数是文件指针。该函数正常情况下返回的值是number,这表示读取了多少个数据。例子:doubleret[10];(其中有一个文件指针名为fp)fread(ret,sizeof(double),10,fp);这个例子表示fread函数将要从fp文件指针中

    2022年9月13日
    0
  • 如何破解运动世界校园模拟器检测

    本文已过时最新版不可用最早用安卓上的PacketCapture抓到http包只要删除对应模拟器文件就可以后来变成了https又对emulatorUrls进行了加密再追加了几个文件就难倒了一批菜鸡软件使用360加固直接逆向难度不小选择曲线救国第一次用Flidder的autoresponder直接把emulatorUrls的值清零返回.

    2022年4月7日
    143
  • 常用八大测试用例设计方法有哪些_测试用例编写方法

    常用八大测试用例设计方法有哪些_测试用例编写方法1、等价类划分(EquivalancePartitioning)测试的思想:将程序的输入域划分为若干个区域(等价类),并在每个等价类中选择一个具有代表性的元素生成测试用例。该方法是常用的黑盒(BlackboxTesting)测试用例(Testcase)设计方法。等价类划分可有两种不同的情况:有效等价类和无效等价类。有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合,它能检验程序是否可以实现规格说明中所规定的功能需求。无效等价类是指对程序的规格说明是不合理的或无意义的输入数据所

    2022年10月12日
    0
  • 结构体 变迁

    结构体 变迁

    2021年12月6日
    38
  • HS数据库_hsqldb

    HS数据库_hsqldb前言在对dao层写测试类的时候,我们需要一个测试数据库,一般我们会是专门建立一个真实的测试数据库,但是有了HSQLDB事情就变得简单了起来。正题一、简介:hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议,如果你是使用Java编程的话,前言在对dao层写测试类的时候,我们需要一个测试数据库,一般我们会是专门建立一个真实的测试数据库,但是有了HSQLDB事情就变…

    2022年9月22日
    0
  • Go Modules 详解

    Go Modules 详解

    2022年2月19日
    282

发表回复

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

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