(二)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 ...
随机推荐
- WIFI无线协议802.11a/b/g/n/ac的演变以及区别
摘自:https://blog.csdn.net/Brouce__Lee/article/details/80956945 毫无疑问,WiFi的出现普及带给我们巨大的上网便利,所以了解一下WiFi对应 ...
- 个性化bash
zsh/on-my-zsh Ubuntu,deepin, 等可以使用 apt install 的系统 apt install zsh 一般就可以自动安装 RedHat(Fedora,Centos) ...
- 刘永富的Office/VBA/VSTO开发资源分享
各种常用安装包下载:https://share.weiyun.com/5PCvqY4 简称 文件名称 描述信息 视频课程 虚拟光驱软件Daemon DAEMON_Tools_Lite_V10.1.0. ...
- iOS 直接使用16进制颜色
在做iOS开发时,一般我们会吸色,就是产品给的图我们一般会吸色,但是最近吸色时候,老大说有较大的颜色偏差,所以要求我们直接使用UI给出的额16进制颜色,你也可以搜索<RGB颜色值转换成十六进制颜 ...
- 五、Shell脚本高级编程实战第五部
一.条件表达式 在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作.有时也和if结合,让我们方便判断. test: 1)判断文件是否存在:test -f file 2) ...
- MySQL导入sql文件,过大导致错误
--导入sql脚本文件,报错: Navicat 导入数据报错 --- 1153 - Got a packet bigger than 'max_allowed_packet' bytes2006 - ...
- ansible-playbook编写服务器初始化脚本
1.原理:通过limit的参数,限制新定义的服务器.即可给新买的服务器初始化优化.(如下图所示) 首先我们编写一个总入口的palybook脚本: init.yml --- - hosts: all u ...
- java连接外部接口获取数据工具类
package com.yqzj.util; import org.apache.log4j.LogManager;import org.apache.log4j.Logger; import jav ...
- linux chmod命令修改文件权限
在linux中,使用chmod命令修改一个文件的权限. 首先,我们查看一个文件夹下所有文件的权限 ls -l linux文件或目录的权限分为,读.写.可执行三种权限.文件访问的用户类别分为,文件创建者 ...
- Idea mac
Idea 的破解 http://idea.lanyus.com/ Idea 的常用配置 模版及模版的使用 创建 JavaWeb 或 Module 关联数据库 版本控制 断点调试 配置 maven 其他 ...