Java数组

  无序数组插入删除查询操作:

public class ArrayList {private static int[] intArray;private int nElems;public ArrayList(int max){intArray=new int[max];nElems=0;}public boolean find(long searchKey){int j;for(j=0;j<nElems;j++){if(intArray[j]==searchKey){break;}}if(j==nElems){return false;}else{return true;}}public void insert(int value){intArray[nElems]=value;nElems++;}public boolean delete(int value){int j;for(j=0;j<nElems;j++){if(value==intArray[j]){break;}}if(j==nElems){return false;}else{for(int k=j;k<nElems;k++){intArray[k]=intArray[k+1];}nElems--;return true;}}public void display(){for(int j=0;j<nElems;j++){System.out.print(intArray[j]+" ");}System.out.println();}public static void main(String[] args) {int maxSize=100;ArrayList arr=new ArrayList(maxSize);arr.insert(77);arr.insert(99);arr.insert(44);arr.insert(55);arr.insert(22);arr.insert(88);arr.insert(11);arr.insert(00);arr.insert(66);arr.insert(33);arr.display();int searchKey=11;if(arr.find(searchKey)){System.out.println("found "+searchKey);}else{System.out.println("can't found "+searchKey);}arr.delete(55);arr.display();}
}

  二分查找,按序插入

//线性查找,二分查找
public class OrderList {private static int[] intArray;private int nElems;public OrderList(int max) {intArray = new int[max];nElems = 0;}public int size() {return nElems;}// 猜数游戏// 二分查找public int find(int searchKey) {int lowerBound = 0;int upperBound = nElems - 1;int curIn;while (true) {curIn = (lowerBound + upperBound) / 2;if (intArray[curIn] == searchKey) {return curIn;} else if (lowerBound > upperBound) {return nElems;} else {if (intArray[curIn] < searchKey) {lowerBound = curIn + 1;} else {upperBound = curIn - 1;}}}}//按顺序插入public void insert(int value) {int j;for (j = 0; j < nElems; j++) {if (intArray[j] > value) {break;}}for (int k = nElems; k > j; k--) {intArray[k] = intArray[k - 1];}intArray[j] = value;nElems++;}public boolean delete(int value){int j=find(value);if(j==nElems){return false;}else{for(int k=j;k<nElems;k++){intArray[k]=intArray[k+1];}nElems--;return true;}}public void display(){for(int j=0;j<nElems;j++){System.out.print(intArray[j]+" ");}System.out.println();}public static void main(String[] args) {int maxSize=100;OrderList arr=new OrderList(maxSize);arr.insert(77);arr.insert(99);arr.insert(44);arr.insert(55);arr.insert(22);arr.insert(88);arr.insert(11);arr.insert(00);arr.insert(66);arr.insert(33);arr.display();int searchKey=11;if(arr.find(searchKey)!=arr.size()){System.out.println("found "+searchKey+":"+arr.find(searchKey));}else{System.out.println("can't found "+searchKey);}arr.delete(55);arr.display();}
}

  效率

线性查找   O(N)
二分查找 O(log N)
无序数组插入   O(1)
有序数组插入 O(N)
无序数组删除 O(N)
有序数组删除 O(N)

转载于:https://www.cnblogs.com/zuzZ/p/8259579.html

(二)Java数组的使用相关推荐

  1. Java IDEA Debug进制二维数组

    1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 1.2 Debug介绍与操作流程 如何加断点 选择 ...

  2. java语言二维数组转置_java实现二维数组转置的方法示例

    本文实例讲述了java实现二维数组转置的方法.分享给大家供大家参考,具体如下: 这里在文件中创建Test2.Exchange.Out三个类 在Exchange类中编写exchange()方法,在方法中 ...

  3. java二维数组从键盘更改_互换二维数组的行列。要求数组的行数、列数以及各元素均从键盘输入;输出互换前数组内容和互换后数组内容。(要求循环输入进行测试)Java...

    1. 互换二维数组的行列.要求数组的行数.列数以及各元素均从键盘输入:输出互换前数组内容和互换后数组内容.(要求循环输入进行测试) package com.mingrisoft; import jav ...

  4. java二维数组矩阵_java使用二维数组开发五子棋

    主要使用到的技术: java基础语法 java面向对象思想 java数组,二维数组 java异常处理 主要步骤和思路: 1,制作一个棋盘类.棋盘类里面有行属性,列属性,二维数组属性. 有一个打印棋盘的 ...

  5. Java编程笔试时输入问题:如何输入固定长度、不定长度的一维数组?如何输入固定长度、不定长度的二维数组?

    Java编程笔试时输入问题: 如何输入固定长度.不定长度的一维数组? 如何输入固定长度.不定长度的二维数组? 如何将数组中的内容直接输出,不要中括号和逗号? 文章目录 ==Java编程笔试时输入问题= ...

  6. Java基础--二维数组

    1.二维数组的定义 二维数组表示行列二维结构,在栈空间中的二维数组的地址指向堆空间中的一维数组,堆空间中的一维数组的地址又指向一维数组所在的内存空间. 2.二维数组的声明 二维数组声明有3种方式,推荐 ...

  7. JAVA实现二维数组中的查找(《剑指offer》)

    最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...

  8. JAVA中一维数组的作用,JAVA中一维数组和二维数组的定义

    在java中数组被看成是一个对象 在定义数组时,有两种定义方法:int[] a 和int a[]:第二种是C/C++对数组定义方式,对于JAVA建议采用第一种定义方式. 总的原则:任何对象在被调用之前 ...

  9. (二十六)、Java数组在内存中如何存放与分配

    Java中有两种类型的数组: 基本数据类型数组: 对象数组: 当一个对象使用关键字"new"创建时,会在堆上分配内存空间,然后返回对象的引用,这对数组来说是一样的,因为数组也是一个 ...

  10. java二位数组biaoda_1 面向对象前部分

    1.类名称 : ①最好是英文 (企业根本没有中文类名称) ② 最好是名词 3. 类名称一般首字母需要大5,并且应该使用"驼峰模式" helloword ---> HelloW ...

最新文章

  1. 自定义注解妙用,一行代码搞定用户操作日志记录,你学会了吗?
  2. MNE-Python专辑 | MNE-Python详细安装与使用(更新)
  3. 【博客搬家旧文】剑指offer [ java ] 面试题10 斐波那契数列
  4. 四个变量的图表怎么做_年终总结必备:Excel双色图表怎么做?数据表达更直观...
  5. bzoj 1684: [Usaco2005 Oct]Close Encounter【数学(?)】
  6. JS中[感叹号]function(){}()的理解
  7. php-fpm的pool - 慢执行日志 - 进程管理 - open_basedir
  8. Python:通过SNMP协议获取华为交换机的ARP地址表
  9. 三段话搞明白什么是Krylov子空间迭代法
  10. Jenkins 多服务器自动部署,发布到多台服务器
  11. 2021-10-19 SAP 创建会计凭证 BTE替代利润中心
  12. 词向量发展史-共现矩阵-SVD-NNLM-Word2Vec-Glove-ELMo
  13. 良许Linux | 寓教于乐!一款游戏让你成为 Vim 高手!
  14. Python Qt6快速入门-嵌入PyQtGraph图表
  15. ImgURL一款简单纯粹的图床程序源码
  16. 【软件建模与UML】(持续更新)
  17. 爬取QQ音乐周杰伦前五页歌曲的歌词
  18. mongodb面试题目,2022腾讯Java面试题精选
  19. 零售业进入立异时期:O2O榜首战
  20. jquery在IE下卡死问题解决方法

热门文章

  1. CentOS 7 编译安装 PHP 7
  2. 用Flink取代Spark Streaming,知乎实时数仓架构演进
  3. sql查询条件为空的另类写法o( ̄▽ ̄)d
  4. Python 第三方模块安装出现的问题和解决方案.
  5. Android Unable to execute dex: java.nio.BufferOverflowException
  6. 如何在Outlook 2003和OWA中允许接受EXE附件
  7. ps练习实例_拥有一份史上最全面的50集ps抠图学习教程是什么一种体验?
  8. 基础总结篇之八:创建及调用自己的ContentProvider
  9. cocos2dx视频教程进阶篇--第2天--打砖块游戏-box2d物理引擎--续
  10. 转 db_file_multiblock_read_count