Java数据结构和算法学习笔记
文章平均质量分 69
严鸿贵Hovi憨人
程序员
展开
-
第四章 栈和队列
一、概念 栈:栈只允许访问一个数据项,即最后插入的数据项。符合后进先出的规则。 队列:队列是一种类似于栈的数据结构,但是队列的规则是先进先出。 二、栈的Java写法 class StackX { private int maxSize; //最大容量 private long[] stackArray; //数组原创 2015-11-08 21:45:09 · 307 阅读 · 0 评论 -
第六章 递归
递归是一种方法调用自己的编程技术。递归方法会不断调用自身,直到满足基值(终止)条件,以防止无限递归下去,此时递归方法将会返回。 调用自身当它调用自身的时候,是为了解决更小的问题存在某个足够简单的问题的层次,在这一层算法不需要调用自己就可以直接解答,且返回结果 一、分治算法 递归的二分查找法是分治算法的一个例子。把一个大问题分成两个相对更小的问题,并且分别解决每一个小问题原创 2015-11-08 21:47:47 · 367 阅读 · 0 评论 -
第五章 链表
链表是一种新的数据存储结构,有别于低效的、大小不可变的数组,它被广泛地应用在许多通用的数据库中。除非需要频繁的通过下标随机访问各个数据,否则在很多使用数组的地方都可以用链表代替。 一、链结点Link 每个数据项都被包含在“链结点”中。一个链结点是某个类的对象,这个类可以叫做Link。每个Link对象中都包含一个对下一个链结点引用的字段(next)。链表本身的对象中有一个字段指原创 2015-11-08 21:45:46 · 312 阅读 · 0 评论 -
第一章 综述
数据结构是对计算机内存中(或者磁盘中)的数据的一种安排。 常见的有:数组、队列、链表、二叉树、栈、哈希表等等。 算法是对这些结构中的数据进行各种处理。 学习数据结构和算法的用处: 现实世界数据存储程序员的工具建模 何谓面向对象编程? 先说明一下过程性语言(C语言)的不足,这类语言有两类问题: 程序与现实世界缺乏对应关系;程序内部的结构出现问题。 而面向对象编原创 2015-11-08 21:42:51 · 355 阅读 · 0 评论 -
第二章 数组
一、创建数组 Java有两种数据类型:基本类型和对象类型。而数组被当作对象来处理。因此创建数组时需要使用new操作符。 int[] intArray; intArray = new int[100]; 或者 int[] intArray = new int[100]; 由于数组是一个对象,所以它的名字intArray是数组的一个引用,并非数组本身。数组存储在内存中的其它地址中,而int原创 2015-11-08 21:43:34 · 260 阅读 · 0 评论 -
第三章 简单排序
一、概要 三种简单的排序:冒泡排序、选择排序、插入排序。 二、冒泡排序 假设由n个队员,并且根据所站的位置从左到右分别给每一个队员编号,从0到n-1。 冒泡排序的过程如下: 从队列的最左边开始,比较第0号和第1号,如果左边的队员比右边高,则交换两个队员。否则不做任何事。然后右移一个位置,比较第1号和第2号,重复上诉步骤,直到最后一个队员。这原创 2015-11-08 21:44:21 · 446 阅读 · 0 评论 -
第七章 高级排序
一、希尔排序 希尔排序是因为插入排序有个严重的问题。假设一个很小的数据项在很靠近右端的位置上,这里本来应该是比较大的数据项所在的位置。然而要把它移到正确的位置,所有中间的数据项都要右移一位。效率大打折扣。因此希尔排序通过加大插入排序中元素之间的间隔,并在这些有间隔的元素中进行插入排序,从而使数据项能大跨度地移动。当这些数据项排过一趟序后,希尔排序算法减小数据项的间隔再进行排序,以h表示原创 2015-11-21 19:37:46 · 476 阅读 · 0 评论 -
第八章 二叉树
一、综述 为什么要用树,这种新的数据结构呢?因为树结合了有序数组和链表的优势——在树中查找数据项的速度和有序数组一样快,并且在插入和删除数据项和链表一样快。 树由边连接的节点组成,如下图: 节点一般代表着现实生活中的实体,在Java中也称对象。节点间的边表示关联节点间的路径,在Java中用引用来表示边。在树的顶层总是只有一个节点,称为根。它通原创 2015-11-21 19:35:28 · 229 阅读 · 0 评论