
算法基础
文章平均质量分 77
iteye_2655
这个作者很懒,什么都没留下…
展开
-
矩阵型数据 顺时针打印
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1 2 3 4 5 6 7 8 9 输出为:1 2 3 6 9 8 7 4 5。(不局限于方阵)分析:打眼一看不难,但真动手写出代码的话,还是有一些地方需要注意的,比如,边界的判断等。从这个问题来分析一下这种比较复杂繁琐问题的处理思路。首先可以得到是按照回子型一层一层打印,再有就是每一层都...原创 2011-01-25 15:28:55 · 178 阅读 · 0 评论 -
全排列 递归式
简单的整理一下全排列思路。全部遍历,打印前筛选条件。全部遍历则是交换,递归,还原。 package SortSet;public class PermOrder { private int[] a; public PermOrder(int[] a) { this.a = a; } public static void main(String[] ...2011-09-27 15:18:31 · 77 阅读 · 0 评论 -
简单的四则运算计算器
这是一个简单的四则运算计算器,不支持括号,没有做乘法的越界计算和除0等异常处理。 只是简单的描述一个四则运算过程。 package SortSet;import java.util.Stack;public class OperationTest { private static Stack<Character> opeStack = ne...2011-09-27 11:27:54 · 198 阅读 · 0 评论 -
ZZ并查集
原文出处:http://blog.sina.com.cn/s/blog_5ec05ef30100cp7f.html作者:angela 所谓并查集,它是一个集合,这个集合的元素也是集合,他支持三种操作MakeSet(x),建立一个只有一个元素x的集合X0,将这个集合放入并查集中;FindSet(x),在并查集中寻找一个元素S(注意并查集的元素S也是集合) ,满...原创 2011-02-22 15:40:08 · 143 阅读 · 0 评论 -
ZZ那些优雅的数据结构(1) : BloomFilter——大规模数据处理利器
原文来自:http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.html BloomFilter——大规模数据处理利器 Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确...原创 2011-02-21 14:39:27 · 153 阅读 · 0 评论 -
矩阵链乘法算法讲解
矩阵链乘是一个计算性问题,是动态规划的适用范例。动态规划要满足以下三个条件:1 最优化原理(最优子结构性质)最优化原理可这样阐述:一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。简而言之,一个最优化策略的子策略总是最优的。一个问题满足最优化原理又称其具有最优子结构性质。 2.无后向...2011-02-15 15:57:33 · 376 阅读 · 0 评论 -
把二元查找树转变成排序的双向链表
分析:二叉树中序遍历即可得到一个有序的结果,只要按照中序遍历的顺序把二叉树节点依次放入双向链表中即可。这里以原有二叉树节点的左序节点表示前驱,右子节点表示后继。 具体源码如下:二叉树节点类:package convertBSTreeToDList;public class BSTreeNode { int data; BSTreeNode left; BST...2011-02-14 19:59:21 · 82 阅读 · 0 评论 -
A Simple Ordered Hashtable
原文来自: http://wuhua.iteye.com/blog/394023 his article illustrates how to implement an ordered hashtable, which maps keys to values. Any non-null object can be used as a key or as a value. As...原创 2011-02-11 15:26:20 · 98 阅读 · 0 评论 -
递归总结二 汉诺塔问题
汉诺塔是貌似递归入门的引导题目,把这个过程写下来,mark一下递归。没别的用处。package hanoi;public class Hanoi { /** * 以A表示起始柱子,C表示结果柱,B表示中间柱 * * @param args */ public static void main(String[] args) { int n = 4;...2011-02-07 19:38:22 · 110 阅读 · 0 评论 -
递归总结一 全排列问题
全排列问题:这是描述数字的全部排列结果的一类问题。有时候经常参杂着一些限制条件。比如12345的全排列,其中34不能连着出现等等。本文以简单的全排列为对象,阐述递归的思想。递归,要有终止条件,然后向终止条件靠就得到结果了。终止条件可以不止一个。大致过程如下:if(终止条件1) dosomething;if(终止条件2) dosomething;else 去向...2011-02-07 18:48:20 · 161 阅读 · 0 评论 -
几种常见的排序算法
这里是以前写的算法总结了。照搬过来而已。package SortSet;import java.math.*;public class SortSetTest { // 插入排序 public static float[] InsertSort(float x[]) { float temp; int tag; for (int i = 0; i &l...2011-02-05 13:19:23 · 80 阅读 · 0 评论 -
二叉树和红黑树的java实现
二叉查找树代码大致如下: 二叉树节点类: package RBTree;public class BSTreeNode { int data; BSTreeNode lchild; BSTreeNode rchild;} 二叉树的功能实现类:package RBTree;public class BSTree { BSTreeNo...2011-02-05 13:11:39 · 108 阅读 · 0 评论 -
LIS 最长递增子序列算法总结
这里包含了三种求得递增子序列的算法。是以前写的代码,这里就拖过来了。import java.util.ArrayList;import java.util.Collections;public class LIS { public static void LIS(int[] L) { // 时间复杂度为O(n^3) Long sTime = System.nano...2011-02-05 12:53:08 · 116 阅读 · 0 评论 -
求1的个数问题
又是一年笔试时,很多学弟们开始笔试了。今天学弟问求一个int数的1个数。分析:除法+最后一次取余就能得到了。或者是移位+与运算粘一个第二种方法的代码:public class getOneCount { public static void main(String[]args){ int n=123; getOneCount(n); } ...2011-01-25 16:14:43 · 100 阅读 · 0 评论 -
消除递归典型应用2------N阶台阶问题
问题描述:一个人可以一步走1或2或3级台阶,问到N级台阶共有多少种走法,输出各种走法的路径?分析:如果只是统计走法个数,简单的f(n)=f(n-1)+f(n-2)+f(n-3)【n>=3】即可,但要输出路径,如果考虑递归的话,显然会内存消耗非常大,而循环求解的话,因为每一步都能利用已经存储的值,所以效率更好一些。具体参见代码: package Staticsteps;...2011-01-25 16:12:41 · 93 阅读 · 0 评论 -
左右手法则的典型应用---字符串逆序
问题:输入 I am a boy 输出boy a am I 要求:o(1)额外空间 o(n)时间复杂度分析:最典型的左右手法则用法,只要两次简单的字符串逆序就可以。只是要注意思维上应该再深一点点,你就一定能得到答案。见下代码: import java.io.BufferedReader;import java.io.IOException;import ja...2011-01-25 16:10:05 · 136 阅读 · 0 评论 -
一个正整数拆分为连续的几个整数之和
import java.util.Scanner;public class DevivingInteger { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int k =scanner.nextInt(); ...2011-01-25 16:08:48 · 900 阅读 · 0 评论 -
斐波那契序列的基本实现
今天实在没事干,刚好别人问了我下斐波那契面试怎么回答。就写了三个最基本的方式来弄吧。import java.util.Stack;public class StackAndRechurisive { public static void main(String[] args){ int n = 8; System.out....2011-01-25 16:07:12 · 119 阅读 · 0 评论 -
数组查值
问题描述:{4,5,7,8,1,2} 找值为K的元素。两种做法,一种常规的稍好于直接查找,另一种为二分o(lgn)import java.util.Arrays;public class FindK { public static void main(String[] args) { int[] a = { 4, 5, 7, 8, 1, 2 }; in...原创 2011-09-27 16:42:50 · 97 阅读 · 0 评论