
算法设计
文章平均质量分 55
路远兮
改变自己
展开
-
Java双向链表的实现
1.链表链表是一种数据结构原创 2014-10-27 12:15:28 · 555 阅读 · 0 评论 -
JAVA实现二叉树的遍历
java 二叉树的遍历原创 2016-03-09 10:29:32 · 364 阅读 · 0 评论 -
选择排序和冒泡排序(JAVA)
选择和冒泡排序的java实现原创 2016-03-15 23:27:56 · 319 阅读 · 0 评论 -
字符串排列与组合
字符串的排列与组合原创 2016-03-26 13:37:09 · 484 阅读 · 0 评论 -
sort-list(Leetcode)
链表的排序原创 2016-05-30 18:10:53 · 325 阅读 · 0 评论 -
evaluate-reverse-polish-notation(Leetcode)
将操作数放在一个栈中,每遇到一个操作符从栈中弹出两个数字原创 2016-05-29 22:32:51 · 340 阅读 · 0 评论 -
minimum-depth-of-binary-tree(Leetcode)
寻找二叉树的最小高度原创 2016-05-29 22:18:25 · 308 阅读 · 0 评论 -
max-points-on-a-line(Leetcode)
max-points-on-a-line原创 2016-05-30 18:02:55 · 544 阅读 · 0 评论 -
reorder-list(Leetcode)
reorder-list原创 2016-05-31 16:48:21 · 348 阅读 · 0 评论 -
linked-list-cycle(LeetCode)
判断链表中时候存在环,找出环的起始位置原创 2016-05-31 17:13:29 · 504 阅读 · 0 评论 -
康托展开
康托展开 与康托逆展开转载 2015-10-23 15:35:39 · 275 阅读 · 0 评论 -
背包九讲(转载)
背包问题转载 2015-08-08 09:12:09 · 234 阅读 · 0 评论 -
单链表的逆转
基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。原创 2015-05-21 16:42:25 · 349 阅读 · 0 评论 -
最大子数组问题
算法描述 求解数组中最大子数组的位置,和归并排序类似,也是使用分治法,最大字数组的位置要么出现在原数组的左半部分,要么出现在原数组的右半部分,要么一部分在左半部分,一部分在右半部分。算法实现package sxd.learn.algorithms;public class Find_Max_SubArray { public static void main(String[] args原创 2015-03-15 11:01:54 · 351 阅读 · 0 评论 -
简单链表的实现
链表的简介 链表是一种这样的数据结构,其中的各对象按线性顺序排列。数组的线性顺序是由数组下标决定的,然而与数组不同的是,链表的顺序是由各个对象里的指针决定的。链表的实现 结点类Nodepackage sxd.learn.algorithms;public class Node { public Node next; public int data; public No原创 2015-03-25 22:53:06 · 389 阅读 · 0 评论 -
插入排序
插入排序1.算法描述 插入排序的过程好比排序扑克牌。开始时,左手为空。然后,我们开始摸牌放入左手中,每摸起一张牌时,我们需要把它插入到左手已有牌中的合适位置,这里我们从右向左将这张牌与左手上已有的牌一次比较,左手上的牌总是排序好的。最终,我们得到整个排序好的序列。2.算法实现package sxd.learn.algorithms;public class原创 2015-03-04 14:34:39 · 393 阅读 · 0 评论 -
堆排序
算法排序 堆排序类似于归并排序,二叉堆是一个数组,它可以被看成一个近似的完全二叉树。树上的每一个节点对应数组中的一个元素。 在排序算法中我们使用的最大堆。 2.package sxd.learn.algorithms;/** * date Mar 19, 2015 * desc HeapSort 堆排序 */public class HeapSort原创 2015-03-19 19:34:41 · 365 阅读 · 0 评论 -
归并排序
算法描述 将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后合并这些子问题的解来建立原问题的解——分治法。归并排序就是分治法的典型算法之一,归并排序的关键操作是合并两个已排序的序列。算法实现package sxd.learn.algorithms;public class MergeSort { public static void main(String原创 2015-03-09 20:42:58 · 392 阅读 · 0 评论 -
计数排序
算法描述 前面所描述的插入排序,归并排序,快速排序等都是比较排序。比较排序指的是,在排序的最终结果中,各元素的次序依赖于它们之间的比较顺序。 计数排序假设n个输入元素中的每一个都是从0到k区间内的一个整数,其中k为某个整数。其基本思想是:对一个输入元素x,确定小于等于x的元素个数,利用这一信息可以直接把x放到它在输出数组中正确的位置上。例如,有17个元素小于x,则x就应该在第18个输原创 2015-03-22 11:13:27 · 368 阅读 · 0 评论 -
动态规划之钢条 切割
问题描述 假设有长度为n寸的钢管,我们可以切割这段钢管以获得最大的利益(假设切割钢管无花费),价格表pi已知,问如何切割才能是销售收益rn最大。 解决方案 对于这个问题我们可以使用递归的方式来解决。 public static int CUT_ROD(int[] p, int n){ if(n == 0){ return 0; }原创 2015-03-31 15:51:07 · 472 阅读 · 0 评论 -
动态规划之最长公共子序列
最长公共子序列问题是给定两个X={x1,x2,……,xm}和Y={y1,y2,……,yn},求X和Y长度最长的公共子序列。原创 2015-04-14 16:27:04 · 423 阅读 · 0 评论 -
动态规划之矩阵链乘法
矩阵乘法问题:给定n个矩阵的链(A1,A2,…,An),矩阵Ai的规模为 求完全括号方案,使得计算乘积所需标量乘法次数最少。原创 2015-04-09 19:40:07 · 596 阅读 · 0 评论 -
快速排序
算法描述 快速排序通常是实际排序中最好的选择。快速排序应用了分治法的思想。 从数组中选取一个数当作主元(通常为第一个数或者最后一个数)分区,小于主元的数放在的它的左边,大于主元的数放在它的右边对左右分区继续执行上述两个过程直到分区只剩一个元素算法实现 package sxd.learn.algorithms;public class QuickSort { public st原创 2015-03-20 19:36:20 · 368 阅读 · 0 评论