
数据结构与算法
crab_xyj
新手一只,欢迎评论和纠错
展开
-
数据结构与算法-归并排序,快速排序
数据结构与算法-归并排序,快速排序这两种多可以算是分治排序归并排序时间复杂度O(nlogn)空间复杂度O(n)稳定排序public static void mergeSort(int[] list,int start,int end) { if(start<end) { int mid = (start+end)/2; mergeSort(list, start,...原创 2019-12-17 17:17:25 · 179 阅读 · 0 评论 -
数据结构与算法-选择排序,插入排序
数据结构与算法-选择排序,插入排序选择排序原理:每次选择最大的或最小的一个放在最前面后最后面时间复杂度:O(n^2)空间复杂度:O(1)不稳定排序/** * 选择排序 */ public static void selectSort(int[] list) { int n = list.length; for(int i=0;i<n;i++) { int ...原创 2019-12-17 14:53:47 · 119 阅读 · 0 评论 -
数据结构与算法-冒泡排序
数据结构与算法-冒泡排序概述:原理:https://visualgo.net/zh/sorting?slide=6 看图理解方便点时间复杂度O(n^2)空间复杂度O(1)适用场景:大部分元素已有序参考链接:https://mp.weixin.qq.com/s/wO11PDZSM5pQ0DfbQjKRQA看了以后发现连冒泡都不会了由于排序数组长度较小(手打的测试数组),难以用时...转载 2019-12-17 14:17:33 · 210 阅读 · 0 评论 -
数据结构与算法-树-B树
数据结构与算法-树-B树概述B树也称B-树。B树中所有结点中孩子结点个数的最大值成为B树的阶,通常用m表示,从查找效率考虑,一般要求m>=3。一棵m阶B树或者是一棵空树,或者是满足以下条件的m叉树。定义B树是一种平衡的多分树,通常我们说m阶的B树,它必须满足如下条件:根结点至少有两个子女。每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m每...原创 2019-10-31 19:26:52 · 226 阅读 · 0 评论 -
数据结构与算法-树-哈夫曼树
数据结构与算法-树-哈夫曼树概述给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。特性对于同一组权值,所能得到的赫夫曼树不一定是唯一的。赫夫曼树的左右子树可以互换,因为这并不影响树的带权路径长度。带权值的节点都是叶子节点,不带权值的节点都...原创 2019-10-31 09:27:38 · 671 阅读 · 0 评论 -
数据结构与算法-树-AVL树
数据结构与算法-树-AVL树一棵AVL树有如下必要条件:它必须是二叉查找树。条件二:每个节点的左子树和右子树的高度差至多为1。使用AVL树的原因我们为了提高查找效率而使用了二叉搜索树,这使得理论上能将查找时间降到O(log(n))的程度,然而实际上这是不可能的,像是1,2,3,4,5.。。。这样的插入方式很可能会导致二叉搜索树的单链过长而无法提高效率。这时候就有了AVL树(平衡二叉树...原创 2019-10-30 12:33:57 · 193 阅读 · 0 评论 -
数据结构与算法-树-遍历
数据结构与算法-树-前中后遍历-递归实现由于我现在主要使用的是java,以下题目所以均由java实现前序遍历题目:144. 二叉树的前序遍历地址:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/submissions/中序遍历题目地址https://leetcode-cn.com/problems/bin...原创 2019-10-27 19:37:17 · 180 阅读 · 0 评论 -
数据结构与算法-树
数据结构与算法-树定义了解一下就行,看图就应该懂了树的定义树是一种数据结构,它是由n(n>=0)个有限节点组成一个具有层次关系的集合,把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。一些术...原创 2019-10-27 16:22:00 · 198 阅读 · 0 评论