![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 84
数据结构与算法
zuodaoyong
这个作者很懒,什么都没留下…
展开
-
红黑树解析
红黑树解析翻译 2022-07-19 01:12:13 · 364 阅读 · 0 评论 -
贪心算法
贪心算法:在问题求解时,每一步选择中都采取最好或者最优的选择,从而希望能够导致结果是最好或者最优的算法思路:1、遍历所有电台,找到一个覆盖了最多未覆盖的地区的电台2、将找到的电台加入到集合里,同时把该电台所覆盖的地区在全部地区集合中清除3、重复第一步,直到覆盖所有地区代码:public static void main(String[] args) { Map...翻译 2020-03-04 22:50:41 · 121 阅读 · 0 评论 -
牛顿迭代法解决对一个数开方
牛顿迭代法是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,就是使用迭代的方法来求解函数方程的根。简单地说,牛顿法就是不断求取切线的过程。...翻译 2020-03-02 22:23:07 · 405 阅读 · 0 评论 -
布隆过滤器
1、原理布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。2、举例:如果要映射一个值到布隆过滤器中,我们需要使用多个不同的哈希函数生成多个哈希值,并对每个生成的哈希值指向的 bit...翻译 2020-02-23 15:21:19 · 234 阅读 · 0 评论 -
查找指定连续日期的算法
先看下面的日期数据找出连续三天以上的日期:2020-01-012020-01-022020-01-052020-01-062020-02-012020-02-022020-02-032020-02-042020-02-062020-02-082020-02-102020-02-112020-02-122020-02-132020-02-142020-02-16...原创 2020-02-05 19:17:10 · 808 阅读 · 1 评论 -
树结构之线索化二叉树
数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树当对上面的二叉树进行中序遍历时,顺序为:8, 3, 10, 1, 6, 14 ,但是 6, 8, 10, 14 这几个节点的 左右指针,并没有完全的利用上.如果希望充分的利用各个节点的左右指针, 让各个节点可以指向自己的前后节点,该怎么办?解决方案:线索二叉树中序线索化后:1、n个结点的二叉链表中含有n...原创 2020-02-01 12:41:30 · 171 阅读 · 0 评论 -
树结构之顺序存储二叉树
从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。顺序存储二叉树特点(1)顺序二叉树通常只考虑完全二叉树(2)第n个元素的左子节点为 2 * n + 1 (3)第n个元素的右子节点为 2 * n + 2(4)第n个元素的父节点为 (n-1) / 2(5)n : 表示二叉树中的第几个元素(按0开始编号)例子:给定数...原创 2020-01-31 17:17:25 · 273 阅读 · 0 评论 -
树结构之二叉树
二叉树每个节点最多只能有两个子节点的树1、满二叉树二叉树的所有叶子节点都在最后一层,且节点总数=2^n-1,n为层数2、完全二叉树二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点是左边连续,倒数第二层是右边连续3、二叉树遍历(1)前序遍历先输出父节点,再遍历左子树和右子树(2)中序遍历先遍历左子树,再输出父节点,再遍历右子树...原创 2019-12-29 23:54:05 · 239 阅读 · 0 评论 -
java内部排序之归并排序
归并排序(时间复杂度(nlogn))时间复杂度:最好O(nlogn),最坏O(nlogn)空间复杂度:O(n)稳定性:稳定思想:假设有n个数,可看成n个有序的子序列,每个子序列长度为1,然后两两再归并,得到长度为2或者1的有序子序列。重复两两子序列归并直到一个长度为n的有序序列为止。代码:public static void sort(int []arr){...原创 2019-12-18 20:30:07 · 128 阅读 · 0 评论 -
java内部排序之基数排序
基数排序(桶排序)思想:将所有待比较数值统一为同样的数位长度,数位较短的数前面补0,然后从最低位开始,一次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。将数组{53,3,542,748,14,214}使用基数升序排序步骤如下:代码如下:private static void radixSort(Integer[] arr){ ...原创 2019-12-17 10:30:17 · 92 阅读 · 0 评论 -
java内部排序之快速排序
快速排序思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个过程递归进行,以此达到整个数据变成有序序列。代码: public static void main(String[] args) throws Exception{ Integer[] arr=new I...原创 2019-10-02 10:47:28 · 104 阅读 · 0 评论 -
java内部排序之希尔排序
在讲述希尔排序前先回顾下直接插入排序直接插入排序算法思想(时间复杂度O(n^2)):时间复杂度:最好O(n),最坏O(n^2)空间复杂度:O(1)稳定性:稳定将设由n个元素,整个排序过程是n-1趟插入,先将序列中的第一个记录看成是一个有序的子序列,然后从第二个记录起逐个进行插入,直至整个序列变成按关键字非递减有序序列为止。代码:public static void m...原创 2019-09-28 22:27:07 · 165 阅读 · 0 评论 -
java内部排序之简单选择排序
简单选择排序的算法思想(时间复杂度0(n^2)):时间复杂度:最好O(n^2),最坏O(n^2)空间复杂度:O(1)稳定性:不稳定对于不稳定性给出一个例子:序列5 8 5 2 9,第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。每一趟在n-i+1(i=1,2,.....,n-1)个记录中选取关键字最小的记录作...原创 2019-09-28 09:35:58 · 78 阅读 · 0 评论 -
java内部排序之冒泡排序
冒泡排序基本思想(时间复杂度0(n^2)):时间复杂度:最好O(n),最坏O(n^2)空间复杂度:O(1)稳定性:稳定第一趟比较:首先将第一个记录的数和第二个数进行比较,如果出现arr[j]>arr[j+1],则交换,然后比较第二个数和第三个数。以此类推直至比较n-1和第n个数为止,最后在n位置上出现最大的数。第二趟比较:对前n-1个数做第一趟重复操作,最后在n-1出现第...原创 2019-09-27 07:24:04 · 147 阅读 · 0 评论