/**
* 本章目标:
* 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. C++:函数模板与模板函数

    6.1 模板的概念 C++允许用同一个函数定义函数,这些函数的参数个数和参数类型不同.例如求最大值的max函数, int max(int x,int y) {       return (x>y ...

  2. makefile使用

    linux make手册:http://www.gnu.org/software/make/manual/make.html 一篇文章: 假设我们有一个程序由5个文件组成,源代码如下:/*main.c ...

  3. html5 touch事件实现触屏页面上下滑动(二)

    五一小长假哪都没去,睡了三天,今天晕晕沉沉的投入工作了,但还是做出了一点点效果 上周用html5的touch事件把简单的滑动做出来了,实现了持续页面上下滑动的效果,参考之前 的文章及代码html5 t ...

  4. UserAccountInfo时间倒计时

    界面如下: 代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.D ...

  5. BZOJ 1923 外星千足虫(高斯消元)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1923 题意:有n个数字,m次测试.每个数字为0或者1.每次测试选出一些数字出来把他们加起 ...

  6. 转:Android 设置屏幕不待机

    本文转载于:http://blog.csdn.net/yudajun/article/details/7748760 Android设置支部待机有两种方法 第一种简单通过设置WindowManager ...

  7. TCSRM 591 div2(1000)(dp)

    挺好的dp 因为有一点限制 必须任意去除一个数 总和就会小于另一个总和 换句话来说就是去除最小的满足 那么就都满足 所以是限制最小值的背包 刚开始从小到大定住最小值来背 TLE了一组数据 后来发现如果 ...

  8. Codeforces Round #204 (Div. 2) C

    写了一记忆化 TLE了  把double换成long long就过了 double 这么耗时间啊 #include <iostream> #include<cstdio> #i ...

  9. hdu 4937 Lucky Number

    虽然算法清晰的不能再清晰,但是实现总是边角料错这错那. 题目大意: 给出n,找出一些进制,使得n在该进制下仅为3,4,5,6表示 解题思路: 首先,4-10000进制直接枚举计算出每一位 此外,最多只 ...

  10. 如何使用jetty

    一直都听说jetty跟Tomcat一样,是一个web容器.之前做项目的时候,也使用过jetty,不过当时jetty是作为一个插件,跟maven集成使用的.那个时候,由于是第一次使用jetty,感觉je ...