
算法
算法
黄道婆
大数据开发工程师、AI算法工程师,喜欢写代码、喜欢读IT资料,IT行业的一名小学生,持续学习ing。活到老,学到老。
程序员的追求:知识、技术、创新。我喜欢这句话。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java学习笔记:用递归编写程序的要点
用递归编写程序时一定要牢记两点:1. 递归公式;2. 收敛条件(什么时候就不再递归 而是回溯了)。原创 2021-06-30 11:03:19 · 139 阅读 · 0 评论 -
转载:LeetCode详细题解答案整理-java
LeetCode详细题解答案整理-java https://blog.csdn.net/qq_41878358/article/details/104346198?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.pc_relevant_is_cache&depth_1-utm_source=distribute.pc_relevant.none-task-blog-Bl...转载 2020-11-16 14:55:05 · 147 阅读 · 0 评论 -
转载:《算法刷题LeetCode(中文版)》LeetCode题解,151道题完整版
原始链接:https://blog.csdn.net/haimianjie2012/article/details/93344894?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.pc_relevant_is_cache&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMac转载 2020-11-16 14:50:03 · 765 阅读 · 0 评论 -
一个算法leetcode的github链接
代码是用go语言实现的。 https://github.com/halfrost/LeetCode-Go原创 2020-11-16 08:34:56 · 149 阅读 · 0 评论 -
转载:图解汉诺塔问题( Java 递归实现)
原始链接:https://www.cnblogs.com/starry-skys/archive/2020/03/23/12555829.html 图解汉诺塔问题( Java 递归实现) 汉诺塔简介 最近在看数据结构和算法,遇到了一个非常有意思的问题——汉诺塔问题。 先看下百度百科是怎么定义汉诺塔的规则的: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺转载 2020-11-10 22:37:04 · 113 阅读 · 0 评论 -
转载:为什么HashMap的负载因子是0.75
原始链接:https://www.jianshu.com/p/eb71278b641e 为什么HashMap的负载因子是0.75 HashMap是用来快速查找内容的一种数据结构。使用n个桶存储数据,数据具体存储在哪个桶中是由Hash算法决定的,即对原始内容执行Hash后得出对应桶的序号。 然后这种数据结构会遇到一些问题,由于内存空间有限,所以桶的数量也是有限制的。当桶的数量较小时就容易出现较多内容放在同一个桶中的情况。HashMap中使用默认的0.75作为桶空间的阈值,如果超过这个大小就需要增加桶的数转载 2020-11-02 13:32:36 · 221 阅读 · 0 评论 -
转载:HashMap面试题
原始链接:https://www.jianshu.com/p/2554b0cd169b HashMap面试题 1:HashMap 的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。 transientNode\[\]table; 2:HashMap 的工作原理? HashMap 底层是 hash 数组和单向链表实现,数组中的每个元素都是链表,由 Node 内部类(实现 Map.Entry接口)实现,Hash...转载 2020-11-02 13:25:02 · 115 阅读 · 0 评论 -
转载:数据结构的动画演示
原始链接:https://www.cnblogs.com/4bytes/p/3664941.html 数据结构的动画演示 weixin_302651032014-04-14 21:26:00654收藏1 文章标签:数据结构与算法 版权 动画演示可以帮助同学更好地学习了解数据结构。下面列出的站点有些提供了交互,初始数据由用户提供,然后再演示。 欢迎同学们提供更好的站点。 http://visualgo.net 旧金山大学David Galles做的各种可视化的数据...转载 2020-10-26 23:22:17 · 612 阅读 · 0 评论 -
好网站:数据结构与算法所有类型动画模拟
数据结构与算法所有类型动画模拟 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html原创 2020-10-26 23:19:30 · 119 阅读 · 0 评论 -
timsort原理的视频
timsort原理的视频 https://www.bilibili.com/video/BV1b4411e7dC?from=search&seid=18347535417713260339原创 2020-09-05 11:06:36 · 114 阅读 · 0 评论 -
转载:Timsort 最快的排序算法
原文链接:https://segmentfault.com/a/1190000020280815?utm_source=tag-newest Timsort 最快的排序算法 背景 Timsort是一种混合、稳定高效的排序算法,源自合并排序和插入排序,旨在很好地处理多种真实数据。它由Tim Peters于2002年实施使用在Python编程语言中。该算法查找已经排序的数据的子序列,并使用该知识更有效地对其余部分进行排序。这是通过将已识别的子序列(称为运行)与现有运行合并直到满足某些条件来完成...转载 2020-09-04 20:07:50 · 319 阅读 · 0 评论 -
转载:Java TimSort算法 源码 笔记
原文链接:https://www.cnblogs.com/yuxiaofei93/p/5722711.html Java TimSort算法 源码 笔记 本来准备看Java容器源码的。但是看到一开始发现Arrays这个类我不是很熟,就顺便把Arrays这个类给看了。Arrays类没有什么架构与难点,但Arrays涉及到的两个排序算法似乎很有意思。那顺便把TimSort算法和双指针快速排序也研究一下吧。 首先强调一下,这是个稳定的排序算法 看过代码之后觉得这个算法没有想象的那么...转载 2020-09-04 20:05:01 · 119 阅读 · 0 评论 -
转载:算法:基数排序RadixSort
转载:算法:基数排序RadixSort 原文链接:https://zhuanlan.zhihu.com/p/104097136 动画 | 什么是基数排序? 我脱下短袖 公众号『算法无遗策』 已关注 1 人赞同了该文章 基数排序和计数排序一样无需进行比较和交换,和桶排序一样利用分布和收集两种基本操作进行排序。基数排序是把每一个元素拆成多个关键字,一个关键字可以在每一个元素上同等的位置进行计数排序,一个元素拆成多个关键字可以看作是要进行几轮分桶,以一个元素最长的长度为准。 ...转载 2020-09-04 17:44:08 · 178 阅读 · 0 评论 -
转载:算法:桶排序BucketSort
转载:算法:桶排序BucketSort 原文链接:https://zhuanlan.zhihu.com/p/104111202 动画 | 什么是桶排序 ? 我脱下短袖 公众号『算法无遗策』 学过上一篇文章的计数排序之后,特别是归约化分治处理的计数排序(适用于较离散的非负整数序列)。计数排序的局限比较多,在排序之前需要解决负数和小数的问题,而桶排序不需要考虑这些。 桶排序和计数排序一样,不受O(nlogn)时间复杂度下限的影响,它将待排序序列通过遍历方式分到有限数量的桶中,...转载 2020-09-04 17:39:50 · 250 阅读 · 0 评论 -
转载:算法:计数排序CountingSort
转载:算法:计数排序CountingSort 文章链接:https://zhuanlan.zhihu.com/p/104111123 我们知道快速排序的时间复杂度期望值是O(nlogn),其中O(logn)是利用了二分法进行远距离比较和交换元素的位置。如果不去做比较交换计算,有没有可能有一种算法,它的时间复杂度期望值能降低到O(n)线性时间呢? 我们可以有这样的思路,对于任何一个待排序数组的元素x,如果知道了待排序数组中有多少个元素比x小,就可以直接知道排序后x应该在什么位置上。例如,知道了待排.转载 2020-09-04 17:35:51 · 165 阅读 · 0 评论 -
转载:算法:堆排序HeapSort
转载:算法:堆排序HeapSort 原文链接:https://zhuanlan.zhihu.com/p/104110241 动画 | 什么是堆排序? 我脱下短袖 公众号『算法无遗策』 回顾一下我们学过的选择排序,在无序区找到一个最小(大)的元素需要比较n-1次,找到第二小的元素需要比较n-2次,直到最后比较1次。而堆排序因为二叉堆的性质,堆顶就是最大的元素,查找次数只有一次,但是将无序转成有序中间还需要一个预处理过程:构造堆有序。 堆有序并不代表数组有序,堆有序是满足二叉堆性质的: ..转载 2020-09-04 17:26:46 · 113 阅读 · 0 评论 -
转载:算法:快速排序QuickSort
转载:算法:快速排序QuickSort 原文链接:https://zhuanlan.zhihu.com/p/98946816 https://zhuanlan.zhihu.com/p/104105417 动画 | 什么是快速排序? 我脱下短袖 公众号『算法无遗策』 已关注 快速排序属性 上一篇文章介绍了冒泡排序和它的优化。这次介绍的快速排序是冒泡排序演变而来的算法,比冒泡排序要高效的很多。 快速排序之所以快,是因为它使用了分治法。它虽然也是通过不断的...转载 2020-09-04 17:12:11 · 242 阅读 · 0 评论 -
转载:算法:归并排序MergeSort
转载:算法:归并排序MergeSort 原始链接:https://zhuanlan.zhihu.com/p/104110929 动画 | 什么是归并排序? 我脱下短袖 公众号『算法无遗策』 已关注 1 人赞同了该文章 归并排序的归并这两个字和递归没有关系,归并是将两个有序的数组归并成一个更大的有序数组,但整个排序算法是有可能跟递归有关系的。因为归并排序算法可以按照递归方式去解决,也可以按照迭代方式去解决。 递归方式是自顶向下的归并排序,迭代方式是自底向上的归并排序。这...转载 2020-09-04 16:20:41 · 197 阅读 · 0 评论 -
转载:算法:希尔排序ShellSort
转载:算法:希尔排序ShellSort 原文链接:https://zhuanlan.zhihu.com/p/104108566 原文链接:https://zhuanlan.zhihu.com/p/104108566 动画 | 什么是希尔排序? 我脱下短袖 公众号『算法无遗策』 已关注 希尔排序属性 上篇写的直接插入排序算法时间复杂度是O(n^2),如果要令此排序算法的时间复杂度要低于O(n^2),必须是“远距离的元素交换”使得这组元素能提高有序的程度,...转载 2020-09-04 14:04:28 · 144 阅读 · 0 评论 -
转载:算法:插入排序InsertionSort
转载:算法:插入排序InsertionSort 插入排序 原文链接:https://zhuanlan.zhihu.com/p/104107073 动画 | 什么是插入排序? 我脱下短袖 公众号『算法无遗策』 已关注 插入排序 插入排序是比较简单也比较直接的一种排序算法。它是从一堆数据中取出一个数据并将它插入到已排序的数据中合适的位置。 比如按身高排队,有一个人指挥排队从第二个人开始,按身高把当前的人安插到之前排序好队的合适的位置。 或者打扑克牌,假设我们...转载 2020-09-03 23:07:25 · 106 阅读 · 0 评论 -
转载:算法:选择排序SelectionSort
转载:算法:选择排序SelectionSort 原文链接:https://zhuanlan.zhihu.com/p/104109752 动画 | 什么是选择排序? 我脱下短袖 公众号『算法无遗策』 已关注 简单选择排序属性 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,...转载 2020-09-03 22:50:51 · 116 阅读 · 0 评论 -
转载:算法:鸡尾酒排序CocktailSort
转载:算法:鸡尾酒排序CocktailSort 原文链接:https://zhuanlan.zhihu.com/p/104105622 动画 | 什么是鸡尾酒排序? 我脱下短袖 公众号『算法无遗策』 已关注 鸡尾酒排序其实就是冒泡排序的变形,它的时间复杂度和冒泡排序一样,都是O(n^2),比快速排序要慢不少。 鸡尾酒排序的思想有点像摆钟一样,从左到右,又从右到左。而冒泡排序只是单向执行。 鸡尾酒排序也是交换排序,假设做一个升序排序,先从左到右,交换一趟把最大的数放...转载 2020-09-03 22:37:46 · 196 阅读 · 0 评论 -
转载:算法:冒泡排序BubbleSort
转载:算法:冒泡排序BubbleSort 原始链接:https://zhuanlan.zhihu.com/p/95702340 原文链接:https://zhuanlan.zhihu.com/p/95702340 冒牌排序算法时间复杂度最坏的情况是,最好的,说明冒泡排序是可以优化的,就看你有没有去发现。 冒泡排序算法的过程是两个元素比较的大小,是典型的交换排序算法。快速排序算法和鸡尾酒排序算法也属于交换排序。 排序方法 比较相邻的元素,判断是否符合要求,如果不符合就交换位置...转载 2020-09-03 17:07:38 · 180 阅读 · 0 评论 -
一些讲算法比较好的文章,还有配套的动图
最近在看算法,发现了一些讲算法比较好的文章,还有配套的动图,记录一下。 原文链接:https://www.zhihu.com/people/zoukeqing/posts 知乎的id是:我脱下短袖 微信公众号是:算法无遗策 其他在网上搜到的算法方面的文章都比较类似,要么是你抄我我抄他,要么是讲得不够清晰。要么是缺少相应开发语言的代码。尤其需要吐槽的是百度百科,感觉整个儿是在糊弄,害我白走不少弯路。不建议在那里找算法方面的文章。 ...原创 2020-08-31 00:55:10 · 120 阅读 · 0 评论 -
十大经典排序算法的动图
十大经典排序算法的动图 动图的百度网盘链接:https://pan.baidu.com/s/1I0MYdzYfauzTYweb_uuo5A 提取码:06wz 涉及的算法名称清单: 1_BubbleSort_冒泡排序 2_SelectionSort_选择排序 3_InsertionSort_插入排序 4_ShellSort_希尔排序 5_MergeSort_归并排序 6_QuickSort_快速排序 7_HeapSort_堆排序 8_CountingSort_计数排序 9_Buc.原创 2020-08-27 22:53:37 · 166 阅读 · 0 评论 -
十大排序算法源代码(Java版)
十大排序算法源代码(Java版) 参考了网上很多关于原理类的文章、好多篇java版源代码,也有自己写的代码。 都是在网上边搜边调试边写的,就不逐一列出参考的文章出处了。 //file name: BubbleSort.java //冒泡排序 package cn.study.sort; public class BubbleSort { public static int[] bubbleSort(int[] arr){ if(arr == null || arr.l...原创 2020-08-25 23:22:28 · 328 阅读 · 0 评论 -
转载:各种排序算法的C++实现(冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序)
原始链接:https://blog.csdn.net/u013834525/article/details/82992097 各种排序算法的C++实现(冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序) 0. 写在最前面 希望大家收藏: 本文持续更新地址:https://haoqchen.site/2018/10/10/all-kind-of-sort/ 如果觉得还不错就点个赞,点个关注呗,博主会长期更新自己的学习和收获。 各个算法的详细介绍请参考这个博客:十大...转载 2020-08-25 00:06:40 · 293 阅读 · 0 评论 -
转载:一篇文章搞懂Java十种常见排序方法(原理+代码+注释)
一篇文章搞懂Java十种常见排序方法(原理+代码+注释) Java十种常见排序方法(原理加代码) 单纯基于比较的排序方法的时间复杂度不能突破O(NlogN),表中最后的三种排序方式复杂度较低。 1.冒泡排序:Java代码:(做了一个小改进) /** * 1.冒泡排序,是通过每一次遍历获取最大/最小值;将最大值/最小值放在尾部/头部; * 然后除开最大值/最小值,剩下的数据在进行遍历获取最大/最小值... * 此处采取最小值放在头部 */ .转载 2020-08-25 00:03:10 · 2283 阅读 · 1 评论