/**
* 本章目标:
* 1.自制数组类
* 2.有序数组:按关键字升降序排列;二分法查找
* 3.分析有序数组。大O表示法
*/
/**
* 自制数组类 书中有的地方有错误,本程序以修改
*/
class HighArray {
private long[] a;
private int nElements;// 维护array的实际元素个数 public HighArray(int size) {
a = new long[size];
nElements = 0;// 初始化的时候个数设为0
} /**
* toString()把数组转为字符串,方便打印
*/
public String toString() {
if (nElements == 0)
return "[]";// 若数组元素个数为0,直接返回[]即可
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < nElements; i++) {
sb.append(a[i] + ",");
}
sb.deleteCharAt(sb.length() - 1);
sb.append("]");
return sb.toString();
} /**
* 打印数组
*/
public void display() {
System.out.println(toString());
} /**
* 插入value
*
* @param value
*/
public void insert(long value) {
if (nElements >= a.length) {// 数组已满
System.out.println("array is full.");
return;
}
// 未满则进行插入,个数加一
a[nElements] = value;
nElements++;
} /**
* 删除value
*
* @param value
* @return
*/
public boolean delete(long value) {
if (nElements == 0) {// 数组为空
System.out.println("array is empty...");
return false;
}
// 找到要删除的元素索引j
int j;
for (j = 0; j < nElements; j++) {
if (value == a[j])
break;
}
// 数组中不含value元素
if (j == nElements)
return false;
//若有value元素,则从该元素位置开始到倒数第二个元素,每个元素被其后一个替换,
//即后面的元素往前移动一个位置。此处中文版边界有错误
else {
for (int k = j; k < nElements - 1; k++) {
a[k] = a[k + 1];
}
nElements--;
return true;
}
} /**
* 数组中是否包含元素key
*
* @param key
* @return
*/
public boolean find(long key) {
int j;
for (j = 0; j < nElements; j++)
if (a[j] == key)
break;
if (j == nElements)
return false;
else
return true;
} /**
* 数组元素个数
*
* @return
*/
public int size() {
return nElements;
}
} public class ArrayDemo {
public static void main(String[] args) {
HighArray la = new HighArray(10);
int[] a = { 1, 3, 3, 4, 2, 6, 7, 9, 8, 12, 33 };
for (int i = 0; i < a.length; i++) {
la.insert(a[i]);
la.display();
}
// System.out.println(la.find(3322));
// for(int i = 0;i<a.length;i++){
// la.delete(a[i]);
// la.display();
// }
// la.delete(3);
la.delete(3);
la.display();
}
}

《Java数据结构与算法》笔记-CH2无序数组的更多相关文章

  1. Java数据结构和算法(二)——数组

    上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍.本篇博客我们介绍数据结构的鼻祖——数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要 ...

  2. 《java数据结构与算法》系列之“数组"

    int arrayName = new int[10] ;2 int arrayLength = arrayName.length; 解释:java有两种数据类型,一种是基本类型,如int等,一种是引 ...

  3. Java数据结构和算法 - 数组

    Q: 数组的创建? A: Java中有两种数据类型,基本类型和对象类型,在许多编程语言中(甚至面向对象语言C++),数组也是基本类型.但在Java中把数组当做对象来看.因此在创建数组时,必须使用new ...

  4. 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现

      本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型   栈是 ...

  5. Java数据结构和算法 - 哈希表

    Q: 如何快速地存取员工的信息? A: 假设现在要写一个程序,存取一个公司的员工记录,这个小公司大约有1000个员工,每个员工记录需要1024个字节的存储空间,因此整个数据库的大小约为1MB.一般的计 ...

  6. Java数据结构和算法(十四)——堆

    在Java数据结构和算法(五)——队列中我们介绍了优先级队列,优先级队列是一种抽象数据类型(ADT),它提供了删除最大(或最小)关键字值的数据项的方法,插入数据项的方法,优先级队列可以用有序数组来实现 ...

  7. Java数据结构和算法(九)——高级排序

    春晚好看吗?不存在的!!! 在Java数据结构和算法(三)——冒泡.选择.插入排序算法中我们介绍了三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大 ...

  8. Java数据结构和算法 - 堆

    堆的介绍 Q: 什么是堆? A: 这里的“堆”是指一种特殊的二叉树,不要和Java.C/C++等编程语言里的“堆”混淆,后者指的是程序员用new能得到的计算机内存的可用部分 A: 堆是有如下特点的二叉 ...

  9. Java数据结构和算法 - 二叉树

    前言 数据结构可划分为线性结构.树型结构和图型结构三大类.前面几篇讨论了数组.栈和队列.链表都是线性结构.树型结构中每个结点只允许有一个直接前驱结点,但允许有一个以上直接后驱结点.树型结构有树和二叉树 ...

随机推荐

  1. 【翻译】Zakas解答Baranovskiy的JavaScript测验题

    原文:http://www.nczonline.net/blog/2010/01/26/answering-baranovskiys-javascript-quiz/ ---------------- ...

  2. MongoDB 安装和即基本操作

    http://www.mongodb.org/ Agile and Scalable MongoDB (from "humongous") is an open-source do ...

  3. python类似微信未读信息图片脚本

    其实就是实现一个效果,给一张图片,然后再右上角给出未读的信息数目,就像我们打开微信的时候,总是看到红点就忍不住想要点击去查看一样. 类似这种效果: 可以知道,图片是给定的,那么只要随机生成一个数字,然 ...

  4. 用maven进行测试

    maven的重要职责之一就是自动运行单元测试,它通过maven-surefire-plugin与主流的单元测试框架junit和testng集成,并且能够自动生成丰富的结果报表. maven并不是一个单 ...

  5. git push提示或错误

    当 git 和 gerrit 一起使用的时候,你创建了一个 tag,现在需要 push 到远程仓库,当你没有权限的时候,会出现如下提示: $ git push origin v20150203 Tot ...

  6. CentOS5.5 正式开始安装 Oracle 11g r2(图形界面安装)

    一.下载oracle 官方网站, 可以下载最新版本 Oracle Database 11g Release http://www.oracle.com/index.html CentOS5. i386 ...

  7. 关于存储过程 output 问题

    在游标循环当中给 output 变量赋值报 指定的转换无效 错误必须在存储过程最后再给 output 变量赋值

  8. I.MX6 开启 1000Mb/s interface

    /*********************************************************************** * I.MX6 开启 1000Mb/s interfa ...

  9. HDU 1863 畅通工程(最小生成树,prim)

    题意: 给出图的边和点数,要求最小生成树的代价,注:有些点之间是不可达的,也就是可能有多个连通图.比如4个点,2条边:1-2,3-4. 思路: 如果不能连通所有的点,就输出‘?’.之前以为每个点只要有 ...

  10. Delphi EVariantTypeCastError错误的解决方法

    在执行程序的时候总是提示: ---------------------------Debugger Exception Notification---------------------------P ...