数据结构与算法
文章平均质量分 78
鱼跃而过
这个作者很懒,什么都没留下…
展开
-
简单排序的Java实现与效率分析
简单排序应该是编程中最基本的,一般在大学课本中有讲解,但是应该有许多同学和我一样没有在意,现在只好返工了。本次分析的简单排序包括冒泡排序、选择排序、插入排序。 首先我们准备一个要排序的数组,当然还有一些方法,基本如下: private int[] sortInts;//排序数组 // 初始化sortInts public SimpleSorts(int[] sortInts) {原创 2012-12-03 15:14:49 · 1161 阅读 · 0 评论 -
栈的Java实现与单词逆序输出
栈是基本的数据结构,它遵循后进先出原则(LIFO,即Last In Frist Out),一次只许访问一个元素,即栈顶的元素。在实现生活中,就像一串糖葫芦,只能吃最上面的糖葫芦,吃完第一个后,才能吃第二个。同时,插葫芦也只能从上往下,一个个的插。 在JDK中,util包中有一个用Vector实现的栈,这里我们用数组实现一个简单的栈。它应该包括入栈、出栈、判空、判满、查看栈顶元素等方法,其代码如下原创 2012-12-04 09:45:35 · 2629 阅读 · 0 评论 -
后缀表达式与解析算术表达式
首先说明,本文中的算术表达式只包括0-9数字的加减乘除,含括号。重点在用Java实现栈和中缀表达式转后缀表达式再计算表达式结果(商用计算器都是采用这种方法)。 首先说一下后缀表达式:我们常见的 1+2*3 属于中缀表达式。换成后缀表达式就是123*+,当然还有前缀表达式:+1*23,不过前缀比后缀表达式用得少,这里就不采用。 对于我们人来说,中缀表达式比较直观,1+2*3,扫一眼就知道等于7,原创 2012-12-07 09:29:14 · 4708 阅读 · 0 评论 -
循环队列与优先级队列的Java实现
与栈的后进先出(LIFO,Last In Frist Out)不同,队列是先进先出(FIFO,Frist In First Out),在现实中就像排队买票一样,每个人都得从队尾排队,然后排在队前的人才能先拿到票。 队列也是基本的数据结构,可以用双端链表(或者双向链表)、数组存储,我们这里用数组存储来解释循环队列。 什么是循环队列捏?假如有一辆过山车有5个位子,规定,进入过山车的人只能从车后进,原创 2012-12-09 20:01:01 · 1570 阅读 · 0 评论 -
单链表与双向链表的Java实现
链表是一种物理存储单元上非连续、非顺序的存储结构。链表的机制灵活,它可以替代数组成为栈、队列的基础存储结构。链表比数组来说,没有大小限制,插入删除不基本需要移动元素。 链表的概念,就像有一群人,其中一个人举起一面旗子。而其他的人必须抓住另一个的后背,而且只能抓住一个。这样,所有的人就形成了一条人链,这个结构就是链表,而人就是链节点。 首先,我们先将链节点的代码写上: public class原创 2012-12-09 20:26:15 · 1032 阅读 · 0 评论 -
简单计算器程序
接着《后缀表达式与解析算术表达式》一文。扩充程序,让他支持整数、小数。会加减乘除操作,这就是一个迷你型的计算器程序了(我的华为手机就是这个程序)。 首先,我们要定义一个基本对象类,他用来存储是操作符和操作数。其代码如下: import java.math.BigDecimal; public class BaseObject { //数字,字符。当charData='m'时,表示BaseO原创 2012-12-09 21:04:02 · 1521 阅读 · 0 评论 -
递归三兄弟——数的乘方、背包问题、组合的Java实现
递归是一个方法调用方法自己本身去解决问题,这是个比较神奇也实用的功能。本篇是为了解决《Java数据结构和算法》一书第六章递归中,最后留下的“三个有趣的问题”。 题一:求一个数的乘方 便携计算器中能够求一个数的乘方,通常是X^Y,表示求X的Y次方。但是如果没有这个键又改如何求捏? 解析:这是三个题目中最简单的,用递归求一个的乘方。代码如下: package test.recursion原创 2012-12-11 22:56:07 · 2082 阅读 · 0 评论