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