博客园 - Burkut
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=153254
2019-06-27T10:10:56Z
Burkut
https://www.cnblogs.com/outerspace/
feed.cnblogs.com
https://www.cnblogs.com/outerspace/p/11098461.html
堆排序算法详解及源代码分析 - Burkut
之前介绍过几种排序算法,今天说一说堆排序算法。虽然堆排序在实践中不常用,经常被快速排序的效率打败,但堆排序的优点是与输入的数据无关,时间复杂度稳定在O(N*lgN),不像快排,最坏的情况下时间复杂度为O(N2)。 说明,了解堆排序的前提是要掌握二叉树的概念,可自行百度,本文不做介绍。 说到堆排序,首
2019-06-27T09:33:00Z
2019-06-27T09:33:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】之前介绍过几种排序算法,今天说一说堆排序算法。虽然堆排序在实践中不常用,经常被快速排序的效率打败,但堆排序的优点是与输入的数据无关,时间复杂度稳定在O(N*lgN),不像快排,最坏的情况下时间复杂度为O(N2)。 说明,了解堆排序的前提是要掌握二叉树的概念,可自行百度,本文不做介绍。 说到堆排序,首 <a href="https://www.cnblogs.com/outerspace/p/11098461.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10986741.html
数据结构系列之2-3-4树的插入、查找、删除和遍历完整版源代码实现与分析(dart语言实现) - Burkut
本文属于原创,转载请注明来源。 在上一篇博文中,详细介绍了2-3树的操作(具体地址:https://www.cnblogs.com/outerspace/p/10861488.html),那么对于更多教科书上更为普遍的2-3-4树,在这里也给出 树的定义、节点的定义、插入、查找、删除和遍历等操作的源
2019-06-06T12:05:00Z
2019-06-06T12:05:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】本文属于原创,转载请注明来源。 在上一篇博文中,详细介绍了2-3树的操作(具体地址:https://www.cnblogs.com/outerspace/p/10861488.html),那么对于更多教科书上更为普遍的2-3-4树,在这里也给出 树的定义、节点的定义、插入、查找、删除和遍历等操作的源 <a href="https://www.cnblogs.com/outerspace/p/10986741.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10861488.html
数据结构系列之2-3树的插入、查找、删除和遍历完整版代码实现(dart语言实现) - Burkut
弄懂了二叉树以后,再来看2-3树。网上、书上看了一堆文章和讲解,大部分是概念,很少有代码实现,尤其是删除操作的代码实现。当然,因为2-3树的特性,插入和删除都是比较复杂的,因此经过思考,独创了删除时分支收缩、重新展开的算法,保证了删除后树的平衡和完整。该算法相比网上的实现相比,相对比较简洁;并且,重
2019-05-13T16:59:00Z
2019-05-13T16:59:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】弄懂了二叉树以后,再来看2-3树。网上、书上看了一堆文章和讲解,大部分是概念,很少有代码实现,尤其是删除操作的代码实现。当然,因为2-3树的特性,插入和删除都是比较复杂的,因此经过思考,独创了删除时分支收缩、重新展开的算法,保证了删除后树的平衡和完整。该算法相比网上的实现相比,相对比较简洁;并且,重 <a href="https://www.cnblogs.com/outerspace/p/10861488.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10858209.html
求一个集合S中m个元素的所有排列以及一个数组A的全排列—递归实现版完整代码 - Burkut
说明,本文全文代码均用dart语言实现。 求一个集合S中m个元素的所有排列情况,并打印,非常适合用递归的思路实现。本文给出了两种实现方法,一种是给定的填充排列数组长度是固定的,一种是可变长度的。两种方法主要思路是一样的,只是实现细节上略有差异。具体代码如下: 如果求一个集合的全排列,如果是集合的话,
2019-05-13T10:15:00Z
2019-05-13T10:15:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】说明,本文全文代码均用dart语言实现。 求一个集合S中m个元素的所有排列情况,并打印,非常适合用递归的思路实现。本文给出了两种实现方法,一种是给定的填充排列数组长度是固定的,一种是可变长度的。两种方法主要思路是一样的,只是实现细节上略有差异。具体代码如下: 如果求一个集合的全排列,如果是集合的话, <a href="https://www.cnblogs.com/outerspace/p/10858209.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10846106.html
递归算法之不用乘号的乘法——用位移实现乘法(dart语言实现) - Burkut
前两天突发奇想,写一个乘法的实现,但不用乘号*。并测试一下性能如何。因此就有了下面的代码:(本文主要目的是为了玩递归和位移,因此仅限自然数) 首先,标准乘法: 第二,从数学的角度,乘法其实就是加法,只是加法的简写而已,因此 a * b 可以理解为 b 个 a 相加;故得出用加法代替的乘法。为了减少加
2019-05-10T11:12:00Z
2019-05-10T11:12:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】前两天突发奇想,写一个乘法的实现,但不用乘号*。并测试一下性能如何。因此就有了下面的代码:(本文主要目的是为了玩递归和位移,因此仅限自然数) 首先,标准乘法: 第二,从数学的角度,乘法其实就是加法,只是加法的简写而已,因此 a * b 可以理解为 b 个 a 相加;故得出用加法代替的乘法。为了减少加 <a href="https://www.cnblogs.com/outerspace/p/10846106.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10827918.html
递归算法之汉诺塔的实现 - Burkut
一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上
2019-05-07T12:39:00Z
2019-05-07T12:39:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上 <a href="https://www.cnblogs.com/outerspace/p/10827918.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10827112.html
递归算法之Fibonacci 斐波那契数列第n个数的求解 - Burkut
Fibonacci 斐波那契数列第n个数的求解,也可以用递归和非递归的形式实现,具体如下,dart语言实现。
2019-05-07T10:07:00Z
2019-05-07T10:07:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】Fibonacci 斐波那契数列第n个数的求解,也可以用递归和非递归的形式实现,具体如下,dart语言实现。 <a href="https://www.cnblogs.com/outerspace/p/10827112.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10827089.html
递归算法之阶乘代码实现与非递归实现 - Burkut
求一个自然数n的阶乘,也非常适合用递归的方式实现。当然,所有的递归都可以用非递归的方式来实现,只是在代码结构上将显得啰嗦和复杂。现代编译器对递归函数的调用开销已经大幅优化,因此,对于类似汉诺塔等问题的求解,用递归实现非常简洁明了,并且易于阅读和理解。 本文给出自然数n的阶乘的递归与非递归求解算法代码
2019-05-07T10:03:00Z
2019-05-07T10:03:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】求一个自然数n的阶乘,也非常适合用递归的方式实现。当然,所有的递归都可以用非递归的方式来实现,只是在代码结构上将显得啰嗦和复杂。现代编译器对递归函数的调用开销已经大幅优化,因此,对于类似汉诺塔等问题的求解,用递归实现非常简洁明了,并且易于阅读和理解。 本文给出自然数n的阶乘的递归与非递归求解算法代码 <a href="https://www.cnblogs.com/outerspace/p/10827089.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10827029.html
递归算法之排列组合-求一个集合S的m个元素的组合和所有可能的组合情况 - Burkut
求一个集合S的m个元素组合的所有情况,并打印出来,非常适合采用递归的思路进行求解。因为集合的公式,本身就是递归推导的: C(n,m) = C(n-1,m-1) + C(n-1,m)。 根据该公式,每次递归会分裂为两次递归,直至m=1或m=n的情况,打印出当前组合情况。 本文实现了给定m的递归代码,并
2019-05-07T09:54:00Z
2019-05-07T09:54:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】求一个集合S的m个元素组合的所有情况,并打印出来,非常适合采用递归的思路进行求解。因为集合的公式,本身就是递归推导的: C(n,m) = C(n-1,m-1) + C(n-1,m)。 根据该公式,每次递归会分裂为两次递归,直至m=1或m=n的情况,打印出当前组合情况。 本文实现了给定m的递归代码,并 <a href="https://www.cnblogs.com/outerspace/p/10827029.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10629158.html
红黑树的删除压力测试和完整性检查 - Burkut
之前的文章写了红黑树的实现,因为自己实现了插入和删除的算法。为了测试算法的性能,以及算法的正确性,又写了几个函数,用来检查一棵树是否是红黑树,并进行压力测试,代码如下:
2019-03-30T13:40:00Z
2019-03-30T13:40:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】之前的文章写了红黑树的实现,因为自己实现了插入和删除的算法。为了测试算法的性能,以及算法的正确性,又写了几个函数,用来检查一棵树是否是红黑树,并进行压力测试,代码如下: <a href="https://www.cnblogs.com/outerspace/p/10629158.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10628956.html
红黑树插入与删除完整代码(dart语言实现) - Burkut
之前分析了红黑树的删除,这里附上红黑树的完整版代码,包括查找、插入、删除等。删除后修复实现了两种算法,均比之前的更为简洁。一种是我自己的实现,代码非常简洁,行数更少;一种是Linux、Java等源码版本的实现,实现的略为复杂,但效率更高。两种算法经过测试,在百万级的数据上效率不分伯仲;1000万的数
2019-03-30T13:14:00Z
2019-03-30T13:14:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】之前分析了红黑树的删除,这里附上红黑树的完整版代码,包括查找、插入、删除等。删除后修复实现了两种算法,均比之前的更为简洁。一种是我自己的实现,代码非常简洁,行数更少;一种是Linux、Java等源码版本的实现,实现的略为复杂,但效率更高。两种算法经过测试,在百万级的数据上效率不分伯仲;1000万的数 <a href="https://www.cnblogs.com/outerspace/p/10628956.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10600105.html
红黑树的删除详解与思路分析——不同于教科书上的算法(dart语言实现) - Burkut
对于红黑树的删除,看了数据结构的书,也看了很多网上的讲解和实现,但都不满意。很多讲解都是囫囵吞枣,知其然,不知其所以然,讲的晦涩难懂。 红黑树是平衡二叉树的一种,其删除算法是比较复杂的,因为删除后还要保持红黑树的特性。红黑树的特性如下: 因此,从红黑树最基础的特性出发,抛开教科书和网上的算法,画了无
2019-03-26T07:55:00Z
2019-03-26T07:55:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】对于红黑树的删除,看了数据结构的书,也看了很多网上的讲解和实现,但都不满意。很多讲解都是囫囵吞枣,知其然,不知其所以然,讲的晦涩难懂。 红黑树是平衡二叉树的一种,其删除算法是比较复杂的,因为删除后还要保持红黑树的特性。红黑树的特性如下: 因此,从红黑树最基础的特性出发,抛开教科书和网上的算法,画了无 <a href="https://www.cnblogs.com/outerspace/p/10600105.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10457938.html
数据结构与算法之二叉树 ——in dart - Burkut
用dart语言实现的二叉树,实现了插入、查找、删除,中序遍历、前序、后序遍历等功能。
2019-03-01T09:55:00Z
2019-03-01T09:55:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】用dart语言实现的二叉树,实现了插入、查找、删除,中序遍历、前序、后序遍历等功能。 <a href="https://www.cnblogs.com/outerspace/p/10457938.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10417966.html
数据结构与算法之排序(4)希尔排序 ——in dart - Burkut
研究了网上大部分的希尔排序代码,发现大部分都是互相抄的——因为网上甚至某些书上的实现大部分都是错的。希尔排序是插入排序的升级版,通过引入间隔,然后分组进行插入排序。再逐步缩小间隔,直至间隔为1时,做全数组的插入排序。dart 代码如下:
2019-02-22T05:54:00Z
2019-02-22T05:54:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】研究了网上大部分的希尔排序代码,发现大部分都是互相抄的——因为网上甚至某些书上的实现大部分都是错的。希尔排序是插入排序的升级版,通过引入间隔,然后分组进行插入排序。再逐步缩小间隔,直至间隔为1时,做全数组的插入排序。dart 代码如下: <a href="https://www.cnblogs.com/outerspace/p/10417966.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10303954.html
数据结构与算法之链表(LinkedList)——简单实现 - Burkut
这一定要mark一下。虽然链表的实现很简单,且本次只实现了一个方法。但关键的是例子:单向链表的反转。这是当年我去H公司面试时,面试官出的的题目,而当时竟然卡壳了。现在回想起来,还是自己的基本功不扎实,代码写的太少。所以现在趁闲暇之余,补课补起来。
2019-01-22T07:06:00Z
2019-01-22T07:06:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】这一定要mark一下。虽然链表的实现很简单,且本次只实现了一个方法。但关键的是例子:单向链表的反转。这是当年我去H公司面试时,面试官出的的题目,而当时竟然卡壳了。现在回想起来,还是自己的基本功不扎实,代码写的太少。所以现在趁闲暇之余,补课补起来。 <a href="https://www.cnblogs.com/outerspace/p/10303954.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10272911.html
数据结构与算法之Stack(栈)——重新实现 - Burkut
之前发过一篇stack的实现,是采用dart内置的List类并固定长度数组实现的。这里重新实现一版,重复利用List类内置特性和方法。实现更为简洁。
2019-01-15T08:57:00Z
2019-01-15T08:57:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】之前发过一篇stack的实现,是采用dart内置的List类并固定长度数组实现的。这里重新实现一版,重复利用List类内置特性和方法。实现更为简洁。 <a href="https://www.cnblogs.com/outerspace/p/10272911.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10272872.html
数据结构与算法之Stack(栈)的应用——用stack实现一个计算器-/bin/calc.dart - Burkut
计算器的bin/calc.dart 可执行代码:
2019-01-15T08:53:00Z
2019-01-15T08:53:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】计算器的bin/calc.dart 可执行代码: <a href="https://www.cnblogs.com/outerspace/p/10272872.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10272848.html
数据结构与算法之Stack(栈)的应用——用stack实现一个计算器——in dart - Burkut
本文用stack实现了一个计算器,支持括号、小数、负数。代码比较简单,没加什么注释。实际使用时,读取用户在stdin的输入,然后计算。若格式错误,会抛出异常。 在实际计算过程中,实际分为三步: 消除输入的空格; 表达式预处理和预计算,这一步将表达式字符串解析为数字、操作符和括号。如果是括号的话,在预
2019-01-15T08:49:00Z
2019-01-15T08:49:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】本文用stack实现了一个计算器,支持括号、小数、负数。代码比较简单,没加什么注释。实际使用时,读取用户在stdin的输入,然后计算。若格式错误,会抛出异常。 在实际计算过程中,实际分为三步: 消除输入的空格; 表达式预处理和预计算,这一步将表达式字符串解析为数字、操作符和括号。如果是括号的话,在预 <a href="https://www.cnblogs.com/outerspace/p/10272848.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10258250.html
数据结构与算法之Stack(栈)的应用——in dart - Burkut
参考教科书上的一个应用例子,用栈来分析一行输入中的括号brackets是否匹配。用stdin读取用户输入,并输出检查结果。exit 退出。 注意这行代码:
2019-01-11T15:45:00Z
2019-01-11T15:45:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】参考教科书上的一个应用例子,用栈来分析一行输入中的括号brackets是否匹配。用stdin读取用户输入,并输出检查结果。exit 退出。 注意这行代码: <a href="https://www.cnblogs.com/outerspace/p/10258250.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/outerspace/p/10256667.html
数据结构与算法之Stack(栈)——in dart - Burkut
用dart 语言实现一个简单的stack(栈)。栈的内部用List实现。
2019-01-11T10:25:00Z
2019-01-11T10:25:00Z
Burkut
https://www.cnblogs.com/outerspace/
【摘要】用dart 语言实现一个简单的stack(栈)。栈的内部用List实现。 <a href="https://www.cnblogs.com/outerspace/p/10256667.html" target="_blank">阅读全文</a>