• 总结 数据结构:二分查找法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();


    }

    }

  • 相关阅读:
    read 命令详解
    rpm 命令详解
    random 模块
    time 模块
    Numpy 数据类型和基本操作
    numpy 数组对象
    netstat 命令详解
    free 命令详解
    Python中*args和**kwargs 的简单使用
    Numpy 数组简单操作
  • 原文地址:https://www.cnblogs.com/yydeyi/p/4448527.html
Copyright © 2020-2023  润新知