基本数据结构算法
DroidMind
这个作者很懒,什么都没留下…
展开
-
学习数据结构和算法动态可视化工具
下面主要推荐一个学习基本算法比较好的工具。工具链接原创 2016-03-08 18:14:12 · 2900 阅读 · 0 评论 -
快速排序, 堆排序,归并排序【N*logN】
快速排序, 堆排序,归并排序都是时间复杂度为O(N*logN)的几种常见排序方法。一、快速排序[不稳定]1、原理:分治+递归2、复杂度:O(nlgn) - O(nlgn) - O(n^2) - O(1)[平均 - 最好 - 最坏 - 空间复杂度]3、栈空间O(lgn) - O(n)4、原理:参看文章:快速排序原理public static void Quicksort(int[] nums, int原创 2016-03-22 16:53:07 · 545 阅读 · 0 评论 -
选择排序、插入排序、冒泡排序【O(n^2)】
选择排序、插入排序、冒泡排序的时间复杂度基本为O(n^2)一、选择排序[不稳定]1、原理:每次从无序序列选取最小的2、复杂度:O(n^2) - O(n^2) - O(n^2) - O(1)[平均 - 最好 - 最坏 - 空间复杂度]public static void selectSort(int[] a) { for (int i = 0; i < a.length; i++) {原创 2016-03-22 21:21:11 · 715 阅读 · 0 评论 -
希尔排序【O(n^1.3)】
希尔排序就是加强版的插入排序,在插入排序的基础上引入了步长。复杂度 平均 O(n^1.3) 最好O(n) 最差O(n^s)[1public static void shellSort(int[] a) { for (int d = a.length/2; d > 0; d = d/2) { // 插入排序 for(int i = d;原创 2016-03-22 22:42:40 · 880 阅读 · 1 评论 -
说说平衡二叉树
一、定义保证任意结点的左、右子树的高度差的绝对值不超过1。这个高度差就是平衡因子,取值只可能为-1,0,1。二、平衡二叉树的插入由于插入一个结点之后,可能导致二叉树失去平衡,即不满足定义,所以需要进行调整。需要注意的是:每次调整的对象都是最小不平衡子树,即插入路径上离插入结点最近的平衡因子大于1的结点作为根的子树。1、LL平衡旋转(右单旋转) (1)LL平衡旋转就是在结点A的左孩子的左子树上插入一原创 2016-08-21 01:11:09 · 878 阅读 · 0 评论 -
说说双端队列
一、双端队列定义:是指允许两端都可以进行入队和出队操作的队列。二、输出受限双端队列定义:允许一端进行插入和删除操作,但是另一端只允许插入的双端队列三、输入受限双端队列定义:允许一端进行插入和删除操作,但是另一端只允许删除的双端队列原创 2016-08-21 12:45:27 · 1112 阅读 · 2 评论