Java数据结构与算法(第二章数组)

数组是应用最广泛的数据存储结构。它被植入到大部分编程语言中。

Java中数组的基础知识

    创建数组

在Java中把它们当作对象来对待,因此在创建数组是必须使用new操作符:

    int[] intArray;            //defines a reference to an array
    ingArray = new int[100];    //creates the array, and 
                                //sets int Array to refer to it
    //或使用等价的单语句声明的方法:
    int[] int array = new int[100];

数组是一个对象,所以它的名字(前面程序中intArray)是数组的一个引用;它并不是数组本身。数组存储在内存中的其他地址中,而intArray仅仅保存着这个地址。数组有一个length字段,通过它可以得知当前数组大小(数据项的个数);

int arrayLength = intArray.length;        //find array size

一旦创建数组,大小便不可改变。

    访问数组数据项

数组数据项通过方括号中的下标来访问。

        temp = intArray[3];        //get contents of fourth element of array
        intArray[7] = 66;            //intsert 66 into the eighth cell

    初始化

当创建整型数组之后,不另行指定那么数组会自动初始化为空。

除非将特定的值赋给数组的数据项,否则它们一直是特殊的null对象。

使用下面的语法可以初始化一个基本类型的数组:

int[] intArray = {1,3,45,23,123,122,56};

数组的大小是由数据列表中的数据项决定的;大小固定不可改变;

有序数组的Java代码

下面讨论一下有序数组的Java代码,它使用OrdArray类来封装数组和它的算法。类的核心是find()方法,通脱二分查找类定位一个特定的数据项。

小结

  • Java中的数组是对象,由new操作符创建;
  • 无序数组可以提供快速的插入,但查找和删除较慢;
  • 将数组封装到类中可以保护数组不随意更改;
  • 类的接口类用户可以访问的方法(有时还有字段)组成;
  • 类的接口被设计成使类用户操作更加简单;
  • 有序数组可以使用二分查找;
  • 以B为底A的对数(大概)是在结果小雨1之前用B除A的次数;
  • 线性查找需要的时间与数组中数据项的个数成正比;
  • 二分查找需要的时间与数组中数据项的个数的对数成正比;
  • 大O表示法为比较算法的速度提供了一种方便的方法。
  • O(1)级时间的算法是最好的,O(logN)次之,O(N)为一般,O(N2)最差;

36页

时间: 2024-08-05 19:35:45

Java数据结构与算法(第二章数组)的相关文章

Java数据结构和算法 第二版 课后习题第三章

习题1.bubbleSort.java程序(清单3.1)和BubbleSort专题applet中,in索引变量都是从左到右移动的,直到找到最大数据项并把它移动到右边的out变量外.修改bubbleSort()方法,使它成为双向移动的.这样,in索引先像以前一样,将最大的数据项从左移到右,当它到达out变量位置时,它掉头并把最小的数据项从右移到左.需要两个外部索引变量,一个在右边(以前的out变量),另一个在左边. public static void bubbleSort(int nElem,i

java数据结构和算法-----第九章红黑树

平衡树和非平衡树 如果待插入的关键字是升序的或者降序的,将会产生非平衡树.(都只在根节点的左边或者右边) 当树没有分支时,此时的树就可以看做单链表.

java数据结构和算法06(红黑树)

这一篇我们来看看红黑树,首先说一下我啃红黑树的一点想法,刚开始的时候比较蒙,what?这到底是什么鬼啊?还有这种操作?有好久的时间我都缓不过来,直到我玩了两把王者之后回头一看,好像有点儿意思,所以有的时候碰到一个问题困扰了很久可以先让自己的头脑放松一下,哈哈! 不瞎扯咳,开始今天的正题: 前提:看红黑树之前一定要先会搜索二叉树 1.红黑树的概念 红黑树到底是个什么鬼呢?我最开始也在想这个问题,你说前面的搜索二叉树多牛,各种操作效率也不错,用起来很爽啊,为什么突然又冒出来了红黑树啊? 确实,搜索二

《Java数据结构和算法》- 数组

Q: 数组的创建? A: Java中有两种数据类型,基本类型和对象类型,在许多编程语言中(甚至面向对象语言C++),数组也是基本类型.但在Java中把数组当做对象来看.因此在创建数组时,必须使用new操作符: int [] objArray = null; // defines a reference to an array objArray = new int[100]; // creates the array, and sets objArray to refer to it 或使用等价的

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

数组的用处是什么呢?--当你需要将30个数进行大小排列的时候,用数组这样的数据结构存储是个很好的选择,当你是一个班的班主任的时候,每次要记录那些学生的缺勤次数的时候,数组也是很有用.数组可以进行插入,删除,查找等. 1)创建和内存分配 Java中有两种数据类型,基本类型和对象类型,也有人称为引用类型,Java中把数组当成对象,创建数组时使用new操作符. int array[] = new int[10]; 既然是对象,那么array便是数组的一个引用,根据Java编程思想(一) -- 一切都是

Java数据结构和算法之数组与简单排序

一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 一维数组 一维数组(one‐dimensional array )实质上是相同类型变量列表.要创建一个数组,你必须首先定义数组变量所需的类型.通用的一维数组的声明格式是: type var‐name[ ]; 获得一个数组需要2步: 第一步,你必须定义变量所需的类型. 第二步,你必

Java数据结构与算法之数组

数组特点: 1.大小固定 2.同一数据类型 3.下标访问 4.数据项可重复 Java数据类型:基本类型(int和double)和对象类型.在许多编程语言中,数组也是基本类型.但在Java中把它们当作对象来对待,因此在创建数组时必须使用new操作符. 有序数组与无序数组比较:最主要的好处是查找速度比无序数组快多了.不好的方面是在插入操作中由于所有靠后的数据都需要移动以疼开空间,所以速度较慢.有序数组和无序数组数据中的删除操作都很慢,这是因为数据项必须向前移动来填补已删除数据项的空洞. 数据访问:从

《Java数据结构和算法》- 哈希表

Q: 如何快速地存取员工的信息? A: 假设现在要写一个程序,存取一个公司的员工记录,这个小公司大约有1000个员工,每个员工记录需要1024个字节的存储空间,因此整个数据库的大小约为1MB.一般的计算机内存都可以满足. 为了尽可能地存取每个员工的记录,使用工号从1(公司创业者)到1000(最近雇佣的工人).将工号作为关键字(事实上,用其他作为关键字完全没有必要).即使员工离职不在公司,他们的记录也是要保存在数据库中以供参考,在这种情况下需要使用什么数据结构呢? A: 一种可能使用数组,每个员工

Java数据结构和算法之链表

三.链表 链结点 在链表中,每个数据项都被包含在'点"中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LINK对象中都包含一个对下一个点引用的字段(通常叫做next)但是本身的对象中有一个字段指向对第一个链结点的引用. 单链表 用一组地址任意的存储单元存放线性表中的数据元素. 以元素(数据元素的映象)  + 指针(指示后继元素存储位置)  = 结点(表示数据元素 或 数据元素的映象) 以"结点的序列&q

java数据结构与算法之双链表设计与实现

转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/53047590 出自[zejian的博客] 关联文章: 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) ??上一篇文章分析顺序表和单链表,本篇就接着上篇继续聊链表,在单链表