java数组-顺序插入数据及二分法查找数据

简介:

顺序加入数组,是我自己想出来的。

而二分法这么简单的算法,我自己没有实践出来,还是看了一下书上代码之后,凭记忆写出来的。

可能有稍许不同,但不影响结果。

加油呀。要

复制代码
class HighArray
  {
      private long[] a;
      private int nElems;
      
      public HighArray(int max)
      {
          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;
          int i;
          long temp;
          a[nElems] = value;
          nElems++;
          for(j = 0; j < nElems; j++){
              for(i = j; i < nElems; i++){
                  if (a[j] > a[i]){
                      temp = a[i];
                      a[i] = a[j];
                      a[j] = temp;
                  }
              }
            }

          System.out.print("Insert  value: " + value);
          System.out.println("");
      }
      public boolean delete(long value)
      {
          int j;
          for(j = 0; j < nElems; j++)
              if(value == a[j])
                  break;
          if(j == nElems){
              System.out.println("Can't delete value: " + value);
              return false;
          }
          else
          {
              for(int k = j; k < nElems; k++)
                  a[k] = a[k + 1];
              nElems--;
              System.out.println("Delete value: " + value);
              return true;
          }
      }
      public void display()
      {
          for(int j = 0; j < nElems; j++)
              System.out.print(a[j] + " ");
          System.out.println(" ");
      }
  }



public class HighArrayApp {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int maxSize = 100;
        int searchKey;
        HighArray arr;
        arr = new HighArray(maxSize);
        
        arr.insert(345);
        arr.insert(24);
        arr.insert(4);
        arr.insert(213);
        arr.insert(987);
        arr.insert(43);
        arr.insert(435);
        arr.insert(17);
        arr.insert(323);
        arr.insert(98);
        
        arr.display();
        System.out.println("Array size is : " + arr.size());
        searchKey = 35;
        if(arr.find(searchKey) != arr.size())
            System.out.println("Found searchKey : " + searchKey);
        else
            System.out.println("Can't find searchKey : " + searchKey);  
        searchKey = 323;
        if(arr.find(searchKey) != arr.size())
            System.out.println("Found searchKey : " + searchKey);
        else
            System.out.println("Can't find searchKey : " + searchKey);  

        
        arr.delete(00);
        arr.delete(55);
        arr.delete(99);
        
        arr.display();
        
        arr.insert(62);
        arr.insert(34);
        
        arr.display();

    }

}
复制代码

目录
相关文章
|
9月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
400 4
|
10月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
10月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
10月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
9月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
570 16
|
9月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
11月前
|
存储 Java 索引
java 数组
在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
240 0
|
传感器 分布式计算 安全
Java 大视界 -- Java 大数据在智能安防入侵检测系统中的多源数据融合与分析技术(171)
本文围绕 Java 大数据在智能安防入侵检测系统中的应用展开,剖析系统现状与挑战,阐释多源数据融合及分析技术,结合案例与代码给出实操方案,提升入侵检测效能。
|
存储 人工智能 Java
打乱数组内容引发的问题( Java)
本文介绍了两种实现数组随机打乱的方法,并深入探讨了Java中原始数据类型与对象类型的差异。方法一通过自定义随机数交换数组元素位置,方法二借助`Collections.shuffle()`函数完成数组打乱。同时,文章详细解析了`int`和`Integer`的区别,包括声明方式、内存占用、初始化以及对象特性等,并讲解了自动装箱与拆箱的功能,帮助读者更好地理解Java的基础知识。
213 0