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