
算法
半壁江山009
初入bigdata,坚持耕耘
展开
-
MergeSort分治实现代码(java)
package coretext;public class MergeSort { public static void main(String[] args) { int []arr = {2,5,3,6,8,4,9,1}; MergeText a =new MergeText(); int [] array =a.MS(arr, 8);原创 2017-09-30 14:26:56 · 1773 阅读 · 0 评论 -
QuickSort最优实现过程代码(java)
用java实现快速排序的最优解法 时间复杂度为O(nlgn);package coretext;public class quickSort { public static void main(String[] args) { int[] array ={4,6,1,3,7,5,8,2}; QuickSort1 arr = new QuickSort1();原创 2017-09-29 22:34:15 · 544 阅读 · 0 评论 -
汉诺塔(hanoi)详解
汉诺塔问题是算法中的经典中的经典,是递归思想的入门问题。一般是这样描述:左中右三根柱子,左边柱子上有n个圆盘 每个圆盘从下至上从大到下排列,移动过程中小的圆盘不能放在大圆盘下面,要求将左边柱子上的圆盘全部移动到右边圆盘上,可以借助中间的圆盘。返回其时间复杂度并且打印每一个步骤。 分析: 首先用特例来初步了解过程即n=2的时候 左边有两个圆盘大圆盘编号为做左1放在下面,小圆盘编号为左2放在上面,移原创 2017-09-25 19:32:54 · 1939 阅读 · 0 评论 -
未知二维数组取最右下角值方法(arr[][].length的总结)
遇到的情况: 1.当函数的参数传经来是一个二维数组,且不知道其维度(如arr[][]); 2.需要遍历二位数的一层 不知道阈值是多少; 详解:(以arr[][]为例) 1.首先 直接写arr.length 表示的是二维数组arr有多少行,测试如下: 2.想要得到某一行有多少列 可以写arr[0].length ,这个就表示二维数组arr有多少列,测试如下: 3.最后就是在未知二维原创 2017-10-19 16:54:00 · 2972 阅读 · 0 评论 -
汉诺塔(hanoi)问题升级版
新规则:限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间。求当塔有N层的时候,打印最优移动过程和最优移动步数;public class hanoiProblem1 { public static void main(String[] args) { hanoi(2,"left","mid","right"); } publ原创 2017-10-10 20:09:02 · 2716 阅读 · 0 评论 -
超级水王问题 详解
水王问题 历史和由来可自行百度 抽象问题为: 奉上代码 即详细注释:* 思想 :如果在一个数组中存在一个出现次数大于一半的数 * 每次删除两个不同的数 到最后剩下的肯定是这个数 不可能是其他是数 */public class superId { public static void main(String[] args) { int [] arr = {2,5,2,原创 2017-10-11 22:36:20 · 2454 阅读 · 0 评论 -
KMP算法的详解
主要是看了左程云老师的算法书 对kmp算法有了更深的领悟 注意:左老师对next[]数组(他书中的是nextarr[]数组)的含义的定义与以往数据结构书上的定义含义不同 但是非常好理解。 贴上连接:http://blog.youkuaiyun.com/u010485491/article/details/52032322 这个博主也是左派 讲的非常详细;值得参考。 最后贴上自己的代码:package z原创 2017-11-16 12:35:35 · 1903 阅读 · 0 评论