算法
JJiaoAo
这个作者很懒,什么都没留下…
展开
-
堆栈和队列的相互转换
[size=medium] 写这篇的灵感,是源自看到网上一个Google的面经。以下一段话引自面经原文: “第三道题目他先是说这东西可能没用,说stack和queue哪个更基本一些,我马上说stack,并告诉他我知道是stack,但不知道为什么是stack,他又具体举了个例子,说1和-1哪个更基本,我几乎没思考就说是1,他说是-1,因为-1*-1可以得到1,而1怎么也得不到-1,我辩解说这...原创 2012-10-18 10:12:43 · 147 阅读 · 0 评论 -
Java算法:递归算法
递归算法时通过解决相同问题的一个或几个小例子来解决问题的算法。在java中,实现递归方法就是调用自身的方法。 [code="java"] public class Recursion { static int factorial(int n) { if(n == 0) { return 1; } return n * factorial(n-1); }...原创 2012-09-08 11:20:10 · 105 阅读 · 0 评论 -
Java 递推思想
像俺一样奋斗在一线的码农们,一谈到学编程,都是说要学会XX语言就OK了,其实我们理解的有一点点的偏差,因为我们只说到了 三分之一,其实真正的编程应该是:编程=数据结构+算法+XX语言。 对的,XX语言只是一个工具而已,就好比我们知道用笔来写字,但是不见得我们就能写出一手让张恨水为之倾倒的好字,其实我也说过 算法不仅仅用于程序设计中,在我们的生活中也处处存在着算法,比如记得我大二学C#...原创 2012-09-14 15:59:21 · 300 阅读 · 0 评论 -
Java 递归思想
今天说说递归思想,在我们编码时,有的时候递归能够让我们的算法更加通俗易懂,并且代码量也是大大的减少。比如我先前的系列中说到了 关于树的“先序,中序和后序”遍历,那么看看用递归来描叙这个问题是多少的简洁,多么的轻松。 [code="java"] #region 二叉树的先序遍历 /// /// 二叉树的先序遍历 /// /// /// ...原创 2012-09-14 17:36:48 · 116 阅读 · 0 评论 -
Java 贪心思想
说到“贪”字,很邪恶的一个词,记得和珅和大人拆解过这个字,为”今“和”贝“,而”贝“字分解成”上面的那个XX“和”人“,意思就是说 今天你贪了,明天一座监狱就把你套起来,纵观古今,有多少豪杰与"贪“结下了不解之缘,呵呵,扯远了。 这个贪心的行为在算法中也成为了一种指导思想,也就是说贪心算法所作出的选择在当时的环境下是最好的,说深一点就是它只是某种 意义上的局部最优解,但不一定是全...原创 2012-09-14 17:58:59 · 162 阅读 · 0 评论 -
Java 冒泡排序和选择排序
[b]冒泡排序[/b] 冒泡排序比较好理解,但是效率比较低, 冒泡排序的基本思想是:每一次将最具有特征的一个数(或者object)放到序列的最前面,或者最后面。 例如,如果需要将一组数,以从小到大的顺序排列,那么就可以设计这样的冒泡方法:可以设计从序列的最后面开始,找出序列中最小的一个数放到序列的最前面,这样经过n次循环也可以实现数组的排列。这种排序方法由于每一次找到的数字都像是...原创 2012-09-15 11:20:04 · 84 阅读 · 0 评论 -
Java 尾递归
[b]递归与尾递归[/b] 关于递归操作,相信大家都已经不陌生。简单地说,一个函数直接或间接地调用自身,是为直接或间接递归。例如,我们可以使用递归来计算一个单向链表的长度: [code="java"] package com.jiaozg.algorithm.tailrecursively; public class Node { private int value;...原创 2012-09-17 13:05:38 · 233 阅读 · 0 评论 -
Hash函数
[size=medium][b]Hash函数[/b][/size] [size=medium] 计算理论中,没有Hash函数的说法,只有单向函数的说法。所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据。用“人类”的语言描述单向函数就是:如果某个函数在给定输入的时候,很容易计算出其结果来;而当给定结果的时候,很难计算出输入来,这就是单项函数。各种加密函数都可以被认为...原创 2012-09-19 22:13:54 · 142 阅读 · 0 评论