
算法和数据结构
文章平均质量分 71
iteye_5555
这个作者很懒,什么都没留下…
展开
-
栈和Java基础类的Stack类的源码实现,缺陷以及如何实现自己的Stack类
栈是重要的数据结构,从数据结构角度看,栈也是线性表,其特殊性在栈的基本操作是线性表的子集。Stack作为最基本的数据结构,在JDK代码中,也有它的实现,java.util.Stack类是继承了Vector类,来实现了栈的基本功能。 1.栈的基本原理 栈(Stack)是限定仅在表尾进行插入或者删除操作的线性表。因此,对于栈来说,表尾端有特殊含义,成为栈顶,表头称之为栈底。 ...原创 2010-02-24 22:54:26 · 186 阅读 · 0 评论 -
队列与Java基础类的队列实现,以及优缺点
1.队列的基本知识 和栈相反,队列是一种先进先出(First In First Out,缩写为FIFO)的线性表,它只允许一端进行插入,而在另外一端删除元素。这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开。在队列中,允许插入的一端叫做队尾(rear),允许删除的一端称之为队头(front)。 2.队列的基本操作 InitQueue:构造一个...原创 2010-03-01 22:26:50 · 417 阅读 · 0 评论 -
简单排序-冒泡排序
1.排序算法的简要介绍 排序是非常重要的的并且是非常耗时的,所以它已经成为一个计算机科学中广泛研究的课题,而且人们已经研究出了一些非常成熟的算法。目前最简单的排序算法包括:冒泡排序、选择排序和插入排序。每一个算法都由一个实例说明。更加复杂的排序算法包括:希尔排序和快速排序。尽管简单排序算法执行速度相对慢一些,但是仍然值得学习。比如,对于小规模的文件以及基本有序的文件,插入排序算法能比快...原创 2010-03-05 17:36:59 · 91 阅读 · 0 评论 -
简单排序-选择排序
选择排序的基本思想是,每一趟在n-i(i=0....,n-1)个记录中选取关键字最小的记录作为有序序列中的第i个记录。 更加具体的描述如下: 假设有5个待排元素需要升序排列: 第一趟排序,把5个元素中最小的元素拿出来,并把它放在第一个位置上,此时第一个元素的位置已经排好,不需要再排列 第二趟排序,把除掉第一个元素的其它四个元素的最小值求出,并把它放在第二个位置上 。。。...原创 2010-03-06 15:33:06 · 127 阅读 · 0 评论 -
插入排序-直接插入排序
直接插入排序-是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。 初始序列: i=1 [46] 58 15 45 90 18 10 62 ↓ i=2 [46 58] 15 45 90 18 10 62 ┌——┘ ↓ i=3 [15 46 58] 45 90 18 10 62 ...2010-03-13 22:32:20 · 104 阅读 · 0 评论 -
哈希查找
Java 中有HashMap,了解哈希的原理,不仅有助于用好HashMap,也有助于理解其它开源产品,甚至自己可以编写效率更高的哈希算法,例如在MemCached(著名的Cache开源产品)中,客户端根据key值定位到哪台server上,用的是求模哈希函数,进行哈希表的地址定位。 哈希最主要是用在查找上,可以说是查找效率最高的算法,但是用好哈希,还是需要了解原理,因为好的哈希实现,首先要解...2010-03-29 22:41:00 · 148 阅读 · 0 评论 -
二叉树-树的构造和遍历
树型结构是一类重要的非线性数据结构。其中以树和二叉树最为常用,直观看来,树是以分支关系定义的层次结构。树结构在客观世界中广泛存在,树在计算机领域中也有广泛的应用,如在编译程序中,可用树来表示源程序的语法结构。 树作为非常基础的数据结构,有必要了解它的基本原理和使用场合,复习二叉树的数据结构,要分几个部分循序渐进地进行,这篇博客只涉及二叉树的构造和遍历。 首先类用于表示树的一个节点:...2010-04-26 14:15:48 · 93 阅读 · 0 评论 -
有序数组的二分查找
有序数组二分查找的基本原理:因为数组是有序的,先找到中间位置的值,如果目标比这个值大,那么该目标必定在数组的右半部分,以此循环或者递归,一直找到这个数值为止。此算法的时间复杂度为O(logN),N为数组的长度 package algorithm.arrayfind; public class SortedArrayBinarySearch { public s...2010-04-27 22:38:37 · 118 阅读 · 0 评论