摘要: 插入排序: 思路: 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。 时间复杂度: 最好 O(N) 当数组正序 最坏 O(N ^ 2) 当数组倒叙 (一)代码 public class I 阅读全文
posted @ 2021-06-30 16:01 朝才 阅读(20) 评论(0) 推荐(0)
摘要: 选择排序算法: 思想: 每次在未排序得数组中找到最小的放到排序数组末尾 时间复杂度: O(n²) (一) 代码 public class SelectionSort { public static void main(String[] args) { int arr[] = new int[]{3, 阅读全文
posted @ 2021-06-30 15:29 朝才 阅读(40) 评论(0) 推荐(0)
摘要: 思想: 先拆分,再合并 核心:归并 时间复杂度: 始终都是 O(nlogn) 。代价是需要额外的内存空间 (一) 代码 public class MergeSort { public static void main(String[] args) { int []arr = {9,8,7,6,5,4 阅读全文
posted @ 2021-06-30 15:02 朝才 阅读(37) 评论(0) 推荐(0)
摘要: 题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大 (一个节点也可以是它自己的祖先) 思路: 递归出口 p == root || q == root || root 阅读全文
posted @ 2021-06-30 11:04 朝才 阅读(104) 评论(0) 推荐(0)