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数组的使用的更多相关文章

  1. java怎么定义一个二维数组?

    java中使用 [][] 来定义二维数组 定义数组时也可同时初始化下面是一些例子float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][ ...

  2. Java的二维数组的应用及杨辉三角的编写

    (1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...

  3. java二维数组的定义

    java中的一维数组的定义都熟了,但是二位数组和一维数组的定义有些微差别.在网上看到了篇文章,总结的很详细.转载下了. 原文链接[http://blog.sina.com.cn/s/blog_6189 ...

  4. java 获取数组(二维数组)长度实例程序

    我们可能知道 js有个length函数,java也有啊length函数 例 如果数组是data[],则data.length 代码如下 复制代码 byte[] phone =new byte[81]; ...

  5. [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组

    1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一 ...

  6. Java中的二维数组

    Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...

  7. java学习之二维数组

    java当中的二维数组,存储一组比较特殊的对象.他存储一个数组,同时存储的数组当中又存储着元素. java二维数组的声明方式一: class Arr2Demo { public static void ...

  8. JAVA二维数组小记

    入手JAVA第二天 //二维数组 //数据类型 [][] 数组名 = new 数据类型[行的个数][列的个数];3 String [][] name = {{"admin",&qu ...

  9. Java菜鸟学习笔记--数组篇(三):二维数组

    定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...

  10. java二维数组学习(转)

    转自:http://blog.csdn.net/java1992/article/details/5808709,在这里谢过了 /* * java学习: * 二维数组的使用: */public cla ...

随机推荐

  1. java使用io流读取windows文件乱码问题

    出现原因: 在IDEA中,使用 FileReader 读取项目中的文本文件.由于IDEA的设置,都是默认的 UTF-8 编码,所以没有任何 问题. 但是,当读取Windows系统中创建的文本文件时,由 ...

  2. Django专题-AJAX

    AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JS ...

  3. 第1章 MYSQL 体系结构和存储引擎

    一.定义数据库和实例 在集群的条件下,存在单个数据库对应多个实例 二.Mysql 体系结构 三.Mysql 存储引擎及各存储引擎之间的比较 命令:show engines; 四.连接 MySQL 4. ...

  4. java生成图形验证码

    效果图 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.Buf ...

  5. Linux] Git: push 出错的解决 master -> master (branch is currently checked out)

      在使用Git Push代码到数据仓库时,提示如下错误: [remote rejected] master -> master (branch is currently checked out ...

  6. springMVC常用知识点的整理

    [spring boot]第3篇:spring boot 进行 web 开发 forward和redirect的区别是什么 Spring MVC中redirect重定向3种方式 =========== ...

  7. redis设置cpu核数与内存

    每个redis实例,给系统要预留至少1/4核,可使用1核心cpu.内存要预留1/2. 比如:8核120G的服务器,可部署8-8/4=6个redis实例,每个实例120/2/6=10G内存.

  8. vue slot插槽v-show不控制显示隐藏

    vue中想控制插槽的显示隐藏,用v-show是不起任何作用的,改用v-if 可以生效.

  9. Opencv笔记(十二)——形态学转换

    学习目标: 学习不同的形态学操作,例如腐蚀,膨胀,开运算,闭运算等 我们要学习的函数有: cv2.erode(), cv2.dilate(), cv2.morphologyEx()等 原理简介: 形态 ...

  10. mac环境下创建bash_profile文件并写入内容 更改php环境变量

    1. 启动终端Terminal 2. 进入当前用户的home目录 输入cd ~ 3. 创建.bash_profile 输入touch .bash_profile 4. 编辑.bash_profile文 ...