Algorithm
aaronhanfei
我是菜鸟o(∩_∩)o...
展开
-
算法基础之快速排序
算法一直是一块短板,今后会陆续写一些常用算法的实现,希望和大家一起探讨学习。 快速排序是排序算法中最经典的一个,原理就不再赘述了,直接上代码。欢迎大家拍砖指导。 :) [code="java"] import java.util.Arrays; /** * 快速排序 * * @author aaron-han * */ public class Qui...2012-03-21 09:50:32 · 71 阅读 · 0 评论 -
算法基础之寻找最大最小值
分治思想求解N个数中的最大值max和最小值min:分别求出前后N/2个数中的max和min,然后取较大的max和较小的min。 比较次数:f(N) = 2*f(N/2) + 2 = ... = 1.5N - 2。 [code="java"] import java.util.Arrays; /** * 寻找最大最小值 【分治】 * * @author aaron-han...原创 2012-03-23 17:10:56 · 204 阅读 · 0 评论 -
算法基础之寻找第二大的数
仅适用于规模N较小的情况。 大致思路:遍历一遍,不断更新max和secondMax。 需要注意两点:1.元素个数小于两个(这个有点打酱油。。) 2.所有元素值相同 代码如下: [code="java"] import java.util.Arrays; /** * 寻找第二大的数:规模N较小的情况 * * @author aaron-han * */ p...原创 2012-03-29 15:33:49 · 342 阅读 · 0 评论 -
算法基础之单链表逆置
貌似各种笔试面试里这个挺爱考的,不清楚过程多画画图就明白了。 先写的单的,哪天把双链表逆置写一下。 :evil: [code="java"] public class LinkedListReverse { /** * 单链表逆置 * * @author aaron-han * */ public static void main(String...原创 2012-04-20 14:58:56 · 1249 阅读 · 0 评论 -
算法基础之打印相交链表的公共节点
不考虑带环的情况... :evil: 这里面其实包含了两个问题:判断链表相交和找两个相交链表的第一个公共点。 思路:首先需要理解的是若两个链表相交,则[color=red]一定是呈Y型[/color]。所以我们分别遍历两个链表,找到最后一个节点,若它们相同,则一定相交。然后我们从后往前考虑,假设两个链表有n个公共节点,两个链表的长分别为l和m(设l>m),那么我们先让较长的链表遍历l-m个。...2012-04-20 15:33:27 · 185 阅读 · 0 评论 -
算法基础之求子数组之和的最大值并记录下标
标题起的又一次把自己恶心到了。。 算法实现完全来源于编程之美,最简单的DP思想的实践。 maxSubSum2方法中稍作修改,记录了下该子序列的下标。 :evil: [code="java"] /** * 子数组之和的最大值:要求子数组的元素是连续的 * * @author aaron-han * */ public class MaxSubSum { ...2012-04-20 20:13:57 · 273 阅读 · 0 评论