《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数据结构和算法 - 二叉树
前言 数据结构可划分为线性结构.树型结构和图型结构三大类.前面几篇讨论了数组.栈和队列.链表都是线性结构.树型结构中每个结点只允许有一个直接前驱结点,但允许有一个以上直接后驱结点.树型结构有树和二叉树 ...
随机推荐
- js 字符串日期 转成 Date
只支持 2015/09/23 反斜杠这样类型 2015-09-23 单横的这种无法识别 var dateStr='${endDate}'; dateStr=dateStr.replace(/-/g,' ...
- C++异常以及异常与析构函数
1. 抛出异常 1.1 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常. 该语句的格式为: throw 表达式; 如果在try语句 ...
- Eclipse常见设置及快捷键使用总结(更新中)
Eclipse中常见设置: 1.Eclipse在保存时设置自动去掉多余的import和格式化代码 路径: window --> preferences --> java --> Ed ...
- BZOJ 2440 完全平方数(莫比乌斯-容斥原理)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2440 题意:给定K.求不是完全平方数(这里1不算完全平方数)的倍数的数字组成的数字集合S ...
- 通俗易懂的讲解iphone视图控制器的生命周期
IOS 视图控制器的生命周期非常非常重要,所以我有必要写个文章来和大家一起探讨问题. 今天在学习视图控制器的生命周期,也看了一下网上的一些资料,但总觉得不是那么好理解,首先我们来看一张图: 先粗略讲一 ...
- TCP建立连接和释放的过程,及TCP状态变迁图
一.TCP报文格式 下面是TCP报文格式图: 重要字段介绍: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占 ...
- POJ 2455 - Secret Milking Machine
原题地址:http://poj.org/problem?id=2455 题目大意:给出一个N个点的无向图,中间有P条边,要求找出从1到n的T条通路,满足它们之间没有公共边,并使得这些通路中经过的最长的 ...
- ganglia的yum插件的配置
由于默认的centos的库是不存在ganglia的相关软件,因此要重新配置yum的库 配置yum库 安装yum优先级插件 yum install yum-priorities 安装Epel 此处是6 ...
- bzoj1876: [SDOI2009]SuperGCD
更相减损数. 上手就debug了3个小时,直接给我看哭了. 3个函数都写错了是什么感受? 乘2函数要从前往后乘,这样后面的数乘2进位以后不会干扰前面的数. 除2函数要从后往前除,这样前面的数借来的位不 ...
- iOS开发:在Xcode中用Pods管理第三方库
之前写了一篇 iOS开发:在Swift中调用oc库 ,今天记录一下如何用Pods的方式来管理第三方库,包括Swift/Object-C的库. 在这之前请先查阅Guides.CocoaPods如何使用的 ...