(二)Java数组的使用
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) |
(二)Java数组的使用的更多相关文章
- java怎么定义一个二维数组?
java中使用 [][] 来定义二维数组 定义数组时也可同时初始化下面是一些例子float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][ ...
- Java的二维数组的应用及杨辉三角的编写
(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...
- java二维数组的定义
java中的一维数组的定义都熟了,但是二位数组和一维数组的定义有些微差别.在网上看到了篇文章,总结的很详细.转载下了. 原文链接[http://blog.sina.com.cn/s/blog_6189 ...
- java 获取数组(二维数组)长度实例程序
我们可能知道 js有个length函数,java也有啊length函数 例 如果数组是data[],则data.length 代码如下 复制代码 byte[] phone =new byte[81]; ...
- [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组
1.数组基础 1.什么是数组: 同一类型数据的集合,就是一个容器. 2.数组的好处: 可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式: (一 ...
- Java中的二维数组
Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...
- java学习之二维数组
java当中的二维数组,存储一组比较特殊的对象.他存储一个数组,同时存储的数组当中又存储着元素. java二维数组的声明方式一: class Arr2Demo { public static void ...
- JAVA二维数组小记
入手JAVA第二天 //二维数组 //数据类型 [][] 数组名 = new 数据类型[行的个数][列的个数];3 String [][] name = {{"admin",&qu ...
- Java菜鸟学习笔记--数组篇(三):二维数组
定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...
- java二维数组学习(转)
转自:http://blog.csdn.net/java1992/article/details/5808709,在这里谢过了 /* * java学习: * 二维数组的使用: */public cla ...
随机推荐
- texshop 使用技巧
mac osX上使用latex 的技巧 指定编译器, 通过宏定义, 也就是在文件开头, 加上类似命令 % !TEX TS-program = pdflatex 多个文件设定主文件, 通过宏定义, 加上 ...
- IntelliJ IDEA 2019.2 LUA环境搭建说明
1.搭建GCC 添加系统环境变量PATH 为C:\MinGW\bin目录 测试命令进入CMD gcc -v 2.编译LUA cd到lua/src目录 mingw32-make min ...
- object detection模型转换成TensorFlow Lite,在Android应用
环境 tensorflow = 1.12.0 bazel = 0.18.1 ubuntu = 16.04 python = 3.6.2 安装 bazel (0.18.1) 如果tensorflow是1 ...
- [Scoi2016]背单词(trie+贪心)
题意:重新解释一下题意吧(题意晦涩难懂) 给定n个单词,你可以按照顺序学习,当学习这一单词时,这个单词是第x个要学习的单词,需要的代价分三类: 1.若存在其他单词是其后缀没被学习,则代价为n2 2.若 ...
- 关于使用静态链表实现一元多项式的相加&&乘积
一元多项式的相加类似于两条链表的合并 当然前提是链表中的幂指数是按顺序排列的 此题中的链表采用的是升序排列,输出也是按升序输出的 #include<stdio.h> #include< ...
- Java依据集合元素的属性,集合相减
两种方法:1.集合相减可以使用阿帕奇的一个ListUtils.subtract(list1,list2)方法,这种方法实现必须重写集合中对象的属性的hashCode和equals方法,集合相减判断的会 ...
- 14 微服务电商【黑马乐优商城】:day03-springcloud(Zuul网关)
本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...
- selector.xml的使用
TextView: <TextView android:id="@+id/resetfragment_btn" app:layout_constraintTop_toBott ...
- 包-logging-hashlib-深浅拷贝
一.包: 包的本质就是一个模块 什么是包:它是一系列模块文件的结合体,表示形式就是一个文件夹,该文件夹内部通常会有一个__init__..py的文件 导入包的过程:先产生一个执行文件的名称空间 1:创 ...
- javascript 的七种基本数据类型
六种基本数据类型 undefined null string boolean number symbol(ES6) 一种引用类型 Object 为什么要引入 Symbol? ES5的对象中的属性名是字 ...