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


相关推荐

  • 微信公众号开发者社区_订阅号怎么弄

    微信公众号开发者社区_订阅号怎么弄引言及内容概要已经有几位读者抱怨“柳峰只用到文本消息作为示例,从来不提图文消息,都不知道图文消息该如何使用”,好吧,我错了,原本以为把基础API封装完、框架搭建好,再给出一个文本消息的使用示例,大家就能够照猫画虎的,或许是因为我的绘画功底太差,画出的那只猫本来就不像猫吧……本篇主要介绍微信公众帐号开发中图文消息的使用,以及图文消息的几种表现形式。标题取名为“图文消息全攻略”,这绝对不是标题

    2022年9月29日
    0
  • java高级工程师_一名Java高级工程师需要学什么?

    java高级工程师_一名Java高级工程师需要学什么?从两方面讨论一名java高级工程师需要学些什么,具备什么能力,感兴趣的小伙伴们可以参考一下宏观上:1.技术广度方面至少要精通多门开源技术吧,研究过struts\spring等的源码。2.项目经验方面从头到尾跟过几个大项目,头是指需求阶段,包括需求调研。尾是指上线交付之后,包括维护阶段。3.架构经验方面有过分布式系统的架构和开发经验。对于跨系统的结构优化,数据存储的性能指标等有丰富经验。什么缓存啊、…

    2022年7月7日
    22
  • 4g模块怎么使用_STM32库开发实战指南:基于STM32F4

    4g模块怎么使用_STM32库开发实战指南:基于STM32F4这部分一直再看,资料都已经整理好了,但是一直没有汇总。接下来就详细的看一下,GSM这部分是怎么实现的。

    2025年7月20日
    0
  • Linux下如何测网速

    Linux下如何测网速

    2022年3月4日
    59
  • Maven相关配置

    Maven相关配置

    2021年7月11日
    93
  • vue生命周期钩子函数(详解及使用场景)(什么是vue的生命周期)

    vue中生命周期钩子函数有哪些发布时间:2020-12-0713:07:03来源:亿速云阅读:94作者:小新这篇文章主要介绍vue中生命周期钩子函数有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vue实例的生命周期钩子函数(8个)1、beforeCreate刚new了一个组件,无法访问到数据和真实的dom,基本上这个好像不能干啥2、createddata属性完成了…

    2022年4月12日
    151

发表回复

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

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