(二)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 ...
随机推荐
- inception对应参数
- C - Monitor CodeForces - 846D (二维前缀和 + 二分)
Recently Luba bought a monitor. Monitor is a rectangular matrix of size n × m. But then she started ...
- Mybatis配置文件无故报错、无自动完成提示的解决方法,及自动生成主要配置项
1.引子 Mybatis配置文件显示红叉有错误,而实际检查又没有错误,这是因为开发环境不能识别这种类型的xml文件.要解决这个问题,就要让IDE开发环境能够“认识”这个文件类型,我们要让IDE环境将这 ...
- spring 事物面试题
1.spring 事物管理器中事物传播机制 2.spring中事物的隔离级别 读未提交-事物未提交,另一个事物可以读取到,脏读 读已提交-事物已提交,先前读取的数据与后来读取的数据不同,不可重复读 可 ...
- 洛谷 P3371 【模板】单源最短路径(弱化版)(dijkstra邻接链表)
题目传送门 解题思路: 传送门 AC代码: #include<iostream> #include<cstdio> #include<cstring> using ...
- Linux bootloader
1.bootloader:初始化相关的硬件 loader:将操作系统从硬盘当中拷贝到内存当中去,,然后让CPU跳转到内存中执行操作系统. 2.boot阶段:(1)关闭影响cpu正常执行的外设 比 ...
- Java文字识别软件-调用百度ocr实现文字识别
java_baidu_ocr Java调用百度OCR文字识别API实现图片文字识别软件 这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面 调用了百度ocr文字识别API 识别精度高 ...
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字典类型(dict)
字典!在Python中字典是另一种可变容器模型,可以存储任意类型的对象.是Python存储数据类型的最高级(maybe). 特点:1. 字典的存储方式和其他类型数据略有不同,是通过键(key)和值(v ...
- SpringMVC访问出错No converter found for return value of type
在使用SSM整合的时候,spring mvc 添加@ResponseBody的时候,正常情况下都会返回json的.但是又的时候如果没有配置好的话,如果想要返回Map的json对象会报:No conve ...
- Mongo学习记录
引子 最近做项目利用mongo记录的日志做数据统计.着了非关系型数据库的迷,于是乎买了本<MongoDB实战>学习了一番.记录一下学习笔记,共享之. 准备 我在自己的Linux服务器上装了 ...