《Java数据结构与算法》笔记-CH2无序数组
/**
* 本章目标:
* 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无序数组的更多相关文章
- Java数据结构和算法(二)——数组
上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍.本篇博客我们介绍数据结构的鼻祖——数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要 ...
- 《java数据结构与算法》系列之“数组"
int arrayName = new int[10] ;2 int arrayLength = arrayName.length; 解释:java有两种数据类型,一种是基本类型,如int等,一种是引 ...
- Java数据结构和算法 - 数组
Q: 数组的创建? A: Java中有两种数据类型,基本类型和对象类型,在许多编程语言中(甚至面向对象语言C++),数组也是基本类型.但在Java中把数组当做对象来看.因此在创建数组时,必须使用new ...
- 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是 ...
- Java数据结构和算法 - 哈希表
Q: 如何快速地存取员工的信息? A: 假设现在要写一个程序,存取一个公司的员工记录,这个小公司大约有1000个员工,每个员工记录需要1024个字节的存储空间,因此整个数据库的大小约为1MB.一般的计 ...
- Java数据结构和算法(十四)——堆
在Java数据结构和算法(五)——队列中我们介绍了优先级队列,优先级队列是一种抽象数据类型(ADT),它提供了删除最大(或最小)关键字值的数据项的方法,插入数据项的方法,优先级队列可以用有序数组来实现 ...
- Java数据结构和算法(九)——高级排序
春晚好看吗?不存在的!!! 在Java数据结构和算法(三)——冒泡.选择.插入排序算法中我们介绍了三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大 ...
- Java数据结构和算法 - 堆
堆的介绍 Q: 什么是堆? A: 这里的“堆”是指一种特殊的二叉树,不要和Java.C/C++等编程语言里的“堆”混淆,后者指的是程序员用new能得到的计算机内存的可用部分 A: 堆是有如下特点的二叉 ...
- Java数据结构和算法 - 二叉树
前言 数据结构可划分为线性结构.树型结构和图型结构三大类.前面几篇讨论了数组.栈和队列.链表都是线性结构.树型结构中每个结点只允许有一个直接前驱结点,但允许有一个以上直接后驱结点.树型结构有树和二叉树 ...
随机推荐
- Linux文件与进程的Capability简介
UID这种权限机制颗粒太粗,容易引起权利过剩(溢出),Linux引入了Capability:每个Capability系统内以一位Bit代表,OS内部使用64bit存储. 下面是android的capa ...
- myeclipse2014破解版本链接
myeclipse2014破解版本下载链接 http://www.my-eclipse.cn/#download myeclipse2014破解版本汉化链接 https://blog.my-eclip ...
- GetKeyState和GetAsyncKeyState以及GetKeyboardState函数的用法与区别
GetKeyState.GetAsyncKeyState.GetKeyboardState函数的区别: 1.BOOL GetKeyboardState( PBYTE lpKeyState );获得所有 ...
- [HDOJ2795]Billboard(线段树,单点更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题意:w*h的公告板要贴公告,公告是w*1的,每个公告有先后顺序,要使每个公告贴的位置尽可能地高 ...
- C++ STL之list容器的基本操作
由于list和vector同属于序列式容器,有很多相同的地方,而上一篇中已经写了vector,所以这一篇着重写list和vector的不同之处和特有之处. 特别注意的地方: (1)STL中迭代器容器中 ...
- Ubuntu 64位系统安装StarUML之最佳实践
preview 相信很多使用Ubuntu的哥们在安装StarUML或者其他软件时都会遇到要求libgcrypt11的依赖.而遗憾的时,这个东西很多人根本找不到. 我将它分享到百度网盘,mark. 一. ...
- 函数os_file_pread
/*******************************************************************//** Does a synchronous read ope ...
- HDU 5284 wyh2000 and a string problem(字符串,水)
题意:比如给你一个串,要求判断wyh是不是它的子序列,那么你只需要找一个w,找一个y,再找一个h,使得w在y前面,y在h前面即可.有一天小学生拿着一个串问他“wyh是不是这个串的子序列?”.但是wyh ...
- Java [Leetcode 206]Reverse Linked List
题目描述: Reverse a singly linked list. 解题思路: 使用递归或者迭代的方法. 代码如下: 方法一:递归 /** * Definition for singly-link ...
- Oracle RAC环境下如何更新patch(Rolling Patch)
Oracle RAC数据库环境与单实例数据库环境有很多共性,也有很多异性.对于数据库补丁的更新同样如此,都可以通过opatch来完成.但RAC环境的补丁更新有几种不同的更新方式,甚至于可以在零停机的情 ...