算法
Hello杨工
误入藕花深处
展开
-
输出所有的01串,按升序排列
题目要求 一个字符串有 n 位,每一位是 0 或者 1 ,要求按要求输出所有可能的字符串且要求升序排列。 示例 一个长度为 3 的字符串,按要求应该输出 000 001 010 011 100 101 110 111 其实思路就是将 0 到 2len - 1 的数字依次用长度为len的二进制字符串表示。 注意:如果用 Integer.toBinaryString() 的方法的话,会导致字符串长度不够,比如 n 为 2 的话, 0 转为 二进制 就变成 0,而不是要求的 00) 代码如下 public原创 2020-09-15 20:47:37 · 561 阅读 · 0 评论 -
Java快速排序实现
快速排序 用某种排序方法对关键字序列 (25,84,21,47,15,27,68,35,20) 进行排序,序列的变化情况采样如下: 15 20 21 25 47 27 68 35 84 15 20 21 25 47 27 68 35 84 15 20 21 25 47 27 68 35 84 15 20 21 25 35 27 47 68 84 15 20 21 25 27 35 47 68 84 15 20 21 25 27 35 47 68 84 请编程实现该算法 观察发现,这个排序算法是快速排序原创 2020-08-08 23:08:27 · 646 阅读 · 0 评论 -
汉诺塔问题中的递归思想
汉诺塔问题 如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数? 这是一个经典的体现递归思想的案例。 假设将n个盘子由A挪至C需要的操作次数为f(n),可以按以下步骤求解: 将n个碟子从A挪到C,等于先将最上面n-1个碟子经...原创 2020-01-07 10:50:13 · 1230 阅读 · 0 评论 -
数组插入排序
排序算法是一个重要且基础的知识点。惭愧的是,个人而言,只有选择排序和冒泡排序理解起来容易些。碰到快速排序和插入排序,虽然逻辑上可以理解,但在代码实现时却碰到不小问题。 下面给出插入排序的一种代码实现。 逻辑:分为两层循环。设数组为array,长度为n。 外循环:执行n-1次插入排序,循环索引从1到到n-1。 内循环:索引 0到 i-1的元素为已排完序,需要将array[i]挨个与其前面 i...原创 2019-03-06 11:37:55 · 1715 阅读 · 0 评论
分享