
数据结构与算法
ynlybjl
这个作者很懒,什么都没留下…
展开
-
排序算法总结
本文总结一下冒泡排序,选择排序,插入排序,快速排序,归并排序,堆排序,主要从原理,代码实现,稳定性,时间复杂度,空间复杂度这几方面来介绍。 冒泡排序 原理 每轮排序,从第一个数开始,依次和后一个位置的数比较,如果左边的数大于右边的,交换两个数。这样,第i轮排序,就会挑选出一个第i大的值。 代码 public static void bubbleSort(int[] a, int n) { f...原创 2019-03-29 22:44:01 · 109 阅读 · 0 评论 -
树的遍历总结
本文总结一下树的几种遍历方法,分别是前序,前序非递归,中序,中序非递归,后序,后序非递归,按层次遍历,这7种。 前序遍历 先打印当前节点,再用前序遍历的方法遍历左右子树。 前序遍历非递归 遍历到当前节点,如果非空,打印这个节点,将其入栈,指向其左子节点,否则,出栈一个元素(这个元素的左子树遍历完毕),指向其右子节点。 中序遍历 用中序遍历的方法遍历左子树,打印当前节点,用中序遍历的方法打印右子数。...原创 2019-03-30 18:43:50 · 1559 阅读 · 0 评论 -
希尔排序
希尔排序,属于缩小增量排序,相当于多次进行插入排序。看下图(不是我画的,是从PPT上截取的): 上代码: 在这里插入代码片原创 2019-03-31 11:04:05 · 144 阅读 · 0 评论 -
跟着TreeMap学红黑树之终结篇
今天总结一下红黑树的删除以及删除之后的调整过程,还是基于1.8 TreeMap的源码。 删除 红黑树的删除操作: private void deleteEntry(Entry<K,V> p) { modCount++; size--; // If strictly internal, copy successor's eleme...原创 2019-04-02 15:48:15 · 138 阅读 · 0 评论 -
岛屿问题总结
题目来自牛客: https://www.nowcoder.com/practice/4ce64fe976c548f5beacfe47faf666b0?tpId=90&tqId=30924&tPage=8&rp=8&ru=/ta/2018test&qru=/ta/2018test/question-ranking 递归解法: import java.uti...原创 2019-05-19 22:41:30 · 1643 阅读 · 0 评论 -
整数无序数组求第k大数
题目来自牛客网 https://www.nowcoder.com/practice/097ab63cffa847d89716f2ca8c23524f?tpId=90&tqId=30914&tPage=7&rp=7&ru=/ta/2018test&qru=/ta/2018test/question-ranking 两种方法,方法一:使用快排,经过一轮之后,元...原创 2019-05-15 22:10:18 · 890 阅读 · 0 评论 -
线性欧拉筛选法求素数
求10000以内的所有素数,这个问题可以使用线性欧拉筛选法,时间复杂度为O(n),上代码: public class EulerSieve { static boolean[] flag = new boolean[10001]; static int[] prime = new int[10001]; public static void main(String[] args) { ...原创 2019-06-23 20:47:43 · 650 阅读 · 0 评论 -
N皇后和数独总结
N皇后问题: 解法参考自《程序员面试金典》235页,这本书上的解答是用一维数组代替二维数组,因为每一行只能放一个皇后,那么我们以columns数组来表示皇后的位置,假如columns[i]=j,表示第i行的皇后位于第j列。接下来直接上代码: import java.util.*; public class NQueens { public static void main(String[...原创 2019-06-26 21:06:02 · 365 阅读 · 0 评论