算法设计
Soul_xiaoming
一个刚毕业的小白
展开
-
斐波那契数列
斐波那契数列 1 1 2 3 5 8 13…方式1、 递归算法 消耗时间:3880907nsm为要计算的第m项算法思想: 使用递归public static int getNumber(int m){ if(m == 1 || m == 2){ return 1; } return getNumber(m-1)+getNumber(m-2);}方...原创 2019-08-26 16:27:42 · 185 阅读 · 0 评论 -
从上往下打印出二叉树
从上往下打印出二叉树的每个节点,同层节点从左至右打印。class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}方式一:使用两个数组 一个数组存...原创 2019-09-30 00:02:22 · 156 阅读 · 0 评论 -
数据流中位数
求中位数如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。使用List集合将数据插入,再将集合是用升序排序判断集合中的数个数是奇数还是欧式import java.util.ArrayList;import java.util.Comparator;import java.util.List;/** * @author yezhiming *2019...原创 2019-09-28 23:17:12 · 159 阅读 · 0 评论 -
输出所有和为S的连续正数序列
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序至少包括两个数思路: 可以使用滑动窗口的思想定义快慢2个指针由于是连续的几个数 求和使用等差数列 Sn = (a1 + an )* n /2如果和等于sum 那么把这几个数存放到集合中 否则 进行判断如果比sum小 那么将快指针进行向前移动如果比sum大 那么将慢指针进行向...原创 2019-09-28 21:39:31 · 435 阅读 · 0 评论 -
八大排序之堆排序
堆排序思想:首先将需要排序的数组放入树中,将树进行大顶堆或者小顶堆排序大顶堆(根节点比左右孩子都大) 小顶堆(根节点比左右孩子节点都小)注:通常大顶堆用于从小到大的排序 小顶堆用于从大到小排序然后将排好序的大顶堆的第一个节点和最后一个节点交换位置 把最后一个节点取出,即为最大数然后将剩下的树再进行大顶堆排序,重复上述步骤,直到最后一个节点完成,堆排序完成。 p...原创 2019-08-29 20:48:55 · 327 阅读 · 0 评论 -
八大排序之基数排序(2)
基数排序 ——使用队列的方式排序每次把存放在数组中的元素拿出时都是按着顺序拿的,先存放的先拿出,所以可以使用队列来实现。定义10 个队列 0 ——9和前一个一样 ,按照先个位再十位再百位比较添加元素和删除元素只需要调用队列的入队和出队方法//定义一个队列public class Queue { //底层使用数组来实现,使用arraylist更加方便,因为arraylist自身有...原创 2019-08-28 19:21:22 · 122 阅读 · 0 评论 -
八大排序之基数排序(1)
基数排序 —— 使用二维数组的方式排序思想:找到需要排序的元素中的最大的数 判断有几位数 maxlength先比较元素中的个位,按顺序放入,把个位相同的放到一组,然后按个位0-9的顺序取出,每组中放入和取出的顺序一样把取出后的新的数组再按十位相同的进行排序,把十位相同的放到一组,再按个位0-9的顺序取出,每组中放入和取出的顺序一样一直到最大的数的位数完成分...原创 2019-08-28 17:20:15 · 122 阅读 · 0 评论 -
八大排序之归并排序
归并排序:使用分治法思想 : 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。使用归并排序最重要的是要使每个合并的部分内的元素都是有序的。将数组从中间分成两部分,再将这两个部分各自分割,直到不能分割,当每个部分都只含有一个元素,而这个元素在自己所在的内部都是有序的,这里使用递归进行分割然后将分割好之后的部分开始进行合并存放到一个临时数组中,再...原创 2019-08-27 15:27:02 · 109 阅读 · 0 评论 -
八大排序之选择排序
选择排序思想:将数组中的第一个元素的索引作标记index将标记的元素不断和后面的元素比较,如果该元素找到后面的元素比该元素小时则将标记标到这个更小的元素 上不断进行第二步操作,直到到数组的最后一个元素,即找到了最小值把最小值和第一个元素交换然后把数组中的第二个元素的索引作为标记 不断重复以上步骤,则排序完成public class SelectSort { publ...原创 2019-08-27 10:48:45 · 117 阅读 · 0 评论 -
八大排序之希尔排序
希尔排序内部也是使用了插入排序将数组中的元素通过计算出的步长(增量)进行分组,每次分组步长为array.length/2将自己组内的元素进行比较使用插入排序,大的在后面,小的在前面然后再进行分组 在将上一次的步长/2再进行自己组内的元素比较,重复上面1、2两步直到步长为0public class ShellSort { public static void main(Str...原创 2019-08-27 10:04:51 · 121 阅读 · 0 评论 -
八大排序之插入排序
插入排序1、 将从第二个元素开始 一直一次和前面的比较,2、 如果比前一个元素值大,则位置不变3、 如果比前一个元素值小,则两者交换位置,再和前一个进行比较4、 每次排序完后前面的数组元素都是有序的5、重复进行以上步骤如下所示: 3,1 ,8,34,93,1,35,34,7,9,6,5第二个元素1---------------- ...原创 2019-08-26 21:09:04 · 178 阅读 · 0 评论 -
八大排序之快速排序
快速排序通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列public class QuickSort { public static void main(String[] args) { int[] array...原创 2019-08-26 20:56:19 · 208 阅读 · 0 评论 -
八大排序之冒泡排序
排序算法之冒泡排序思想:步骤1 找最大值 将第一个元素和第二个元素比较,步骤2 取比较后大的元素,再将该元素与第三个元素 比较 重复该步骤,知道比较完后取出最大值步骤3 找出除去最后一个最大的元素,将剩下的元素按以上步骤继续比较 直到 所有元素比较完成public class BubbleSort { public static void main(String[] args...原创 2019-08-26 20:45:48 · 692 阅读 · 0 评论 -
求字符串最长回文序列
思想 :总共有2n-1 个中间点 n 个 字符 n -1 个字符;取字符串的一个中间点向左右两边扩散,如果左边字符等于右边字符,则是当前截取的字符串回文再继续 left – , right ++ ;查看每个节点的回文是否存在,存在则将该回文保存。后面回文长度和前面的回文长度比较 取最大的回文长度。/** 求字符串最长回文序列 * @author yezhiming *2019...原创 2019-09-30 22:21:49 · 335 阅读 · 0 评论