
算法编程
文章平均质量分 86
盛之羽翼
https://shengshuqiang.github.io/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
快速排序
快速排序 描述:通过若干次划分的方法完成待排序序列的排序。划分是通过一次遍历用基准数将待排序序列分成两个部分,在基准数左边的部分都小于等于该基准数,在基准数右边的都大于等于该基准数。经过一次划分后,待排序序列划分成两个独立的序列,然后分别将划分过后的两个独立序列当做待排序序列再进行划分。 Java代码: // 划分方法返回基准位置, // 基准位置左边的所有原创 2013-12-12 22:15:45 · 647 阅读 · 0 评论 -
插入、删除、修改指向下一节点和下下一节点链表
操作一个链表,链表中的节点有两个指针,一个指向下一个节点, 一个指向下下一个节点,如果下一个节点或者下下一个节点为空,则为null。 操作为插入,删除,修改。原创 2013-12-21 14:09:18 · 1578 阅读 · 0 评论 -
二叉树转换为双向链表
二叉树转换为双向链表 通过随机创建二叉排序树测试二叉树转换为双向链表是否正确 import java.util.Random; /* * shsheng */ public class BinTreeToDoubleLinkedList { public static void main(String[] args) { try {原创 2013-12-17 21:33:32 · 1043 阅读 · 0 评论 -
栈和队列操作:栈实现、队列实现、双栈实现队列、双队列实现栈、栈实现O(n)求当前栈最大值
栈实现 队列实现 双栈实现队列 双队列实现栈 栈实现O(n)求当前栈最大值原创 2013-12-18 17:16:45 · 1439 阅读 · 0 评论 -
寻找数组中的值
一个长度为100的数组,开始乱序存放了1到100共100个数, 将其中一个位置上面的数字赋值为-1,请问该位置赋值之前是多少? 一个长度为100的数组,开始乱序存放了1到100共100个数, 将其中两个位置上面的数字赋值为-1,请问这两个位置赋值之前分别是多少? 给出一个递增数组array和由array中两个数的和n,求出这两个数? 求两个递增数组的最小距离,即在两个数组中各取一个数,使得这两个数的差最小?原创 2013-12-18 21:20:28 · 1095 阅读 · 0 评论 -
过滤连续空格
输入一句话,里面含有多个空格,一次遍历将多个连续空格变成一个空格。 /* * shsheng */ public class FilterSpaces { public static void main(String[] args) { test(); } /* * 输入一句话,里面含有多个空格,将多个连续空格变成一个空格。 */原创 2013-12-18 15:12:53 · 797 阅读 · 0 评论 -
卡特兰数(Catalan)应用:输出所有N对合法括号序列和输出所有已知进栈序列的合法出栈序列
Catalan应用 输出所有N对合法括号序列输出所有已知进栈序列的合法出栈序列 /* * shsheng */ public class Catalan { // Catalan数可以用来描述以下问题,有2*n个人排队买票,票5元一张, // 2*n个人中n个人拿着5元钱买票,另外n个人拿着10元钱, // 售票员没有带钱,问2*n个人有几种排队方法,原创 2013-12-18 14:40:27 · 1497 阅读 · 0 评论 -
构成回文序列最少要增加多少字符
构成回文序列最少要增加多少字符 方法一: 为递归比较数组的头和尾: 如果头尾对应相同,则回文序列求解递归求解去头尾的回文序列(X...X => ...); 如果头尾对应不同,则有两种情况, 一种是在尾部后面添加头(X...Y => X...YX => ...Y), 一种是在头部前面添加尾(X...Y => YX...Y => X...), 解法为递归求解两种情况,取情况小的那种。原创 2013-12-17 22:35:55 · 1144 阅读 · 0 评论 -
二分查找
二分查找 普通二分查找 描述:求解递增序列array的sta位置到end位置中间满足等于val值的位置。 适用范围:有序序列。 优势:如果数组长度为n,其算法复杂度为o(log(n)),每次查找能够将数组范围缩小到数组当前长度的一半。 求解: 1. 判断sta位置是否在end位置后面。 l sta l sta>end,找不到满足等于val值的位置,退出循环,返回-1,表示没有原创 2013-12-12 00:13:27 · 705 阅读 · 0 评论 -
二叉树递归和非递归遍历以及层次构建节点数为n的二叉树
目录: 二叉树深度二叉树前序遍历 递归实现二种非递归实现 二叉树中序遍历: 递归实现非递归实现 二叉树后序遍历: 递归实现非递归实现 二叉树层次遍历二叉树层次创建,创建方法遵循卡特兰数 import java.util.Queue; import java.util.Stack; /* * ssuchange */ pub原创 2013-12-17 17:56:29 · 1604 阅读 · 0 评论 -
青蛙上台阶,可以一下跳1步,也可以一下跳2步,n层台阶所有跳法?
青蛙上台阶,可以一下跳1步,也可以一下跳2步,n层台阶所有跳法? 问题分析: 1. 该问题为斐波那契数列问题,问题的求解方法是对子问题的递归求解。 f(n)=f(n-1)+f(n-2) n>2, f(1)=1, f(2)=2. 2. 求解出所有解法,则需要用栈记录递归中的解法。 Java代码: public class JavaTest { in原创 2013-12-12 22:49:36 · 1735 阅读 · 0 评论 -
求解最大子序列、最长递增子序列、最长公共子串、最长公共子序列
求解最大子序列、最长递增子序列(Longest Increasing Subsequence)、最长公共子串LCS 、最长公共子序列 最大子序列:找出由数组成的一维数组中和最大的连续子序列。 最长递增子序列(Longest Increasing Subsequence):设L=是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=akm>,其中k1akm。求最大的m值。原创 2013-12-16 00:26:49 · 1920 阅读 · 0 评论 -
蛇形矩阵求解
蛇形矩阵求解 Java代码: public class SnakeMatrix { /** * @param args */ public static void main(String[] args) { snakeMatrix(2,4);原创 2013-12-16 10:09:53 · 961 阅读 · 0 评论 -
输出n的全排列
输出n的全排列,有两种方法: 1. 采用递归插入的方法,如果知道n-1的全排列,n的全排列为将数值n插入的n-1的全排列之间的空隙和两头共n个位置。 2. 采用递归标记填充的方法,查看标记数组,将未标记的数值依次填充当前位置,然后更新标记数组并递归下一位置。 Java代码: public class Factorial { /** * @para原创 2013-12-13 20:27:48 · 1967 阅读 · 0 评论 -
字符串逆转
逆序输出一段话,如输入"I want to change the world",则输出"world the change to want I"。 将数组的后面若干位换到前面,如将0123456789变为6789012345。原创 2013-12-24 20:36:16 · 1017 阅读 · 0 评论