- 博客(14)
- 资源 (22)
- 收藏
- 关注
原创 查找算法 | 键树详细分析
键树,又称数字查找树(Digital Search Trees),是一棵度>=2的树,它的某个节点不是包含一个或多个关键字,而是只包含组成关键字的一部分(字符或数字)。如果关键字本身是字符串,则键树中的一个结点只包含有一个字符;如果关键字本身是数字,则键树中的一个结点只包含一个数位。每个关键字都是从键树的根结点到叶子结点中经过的所有结点中存储的组合。根结点不代表任何字符,根以下第一层...
2018-10-31 16:57:56 1342
原创 查找算法 | B+树详细分析
在阅读本篇博客前请先阅读《数据结构和算法 | B-树详细分析》B+树是由B树变来的,B+树和B树有这样的区别:B+树的非叶子节点不记录数据本身,只记录引用的连接,并且结点中仅含有其子树中的最大(或最小)关键字。基于此特点,B+树在非叶子节点的文件会非常小;B+树的所有的叶子结点中包含了全部关键字的信息;B+树的每个叶子节点都有指向相邻的下一个兄弟叶子节点的指针且叶子结点本身依关键字的...
2018-10-30 20:59:05 2521
原创 查找算法 | B-树详细分析
什么是B-树?1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树(或多路查找树),称为 B树。B树,有时又写为B-树或B_树(其中的“-”或者“_”只是连字符,并不读作“B减树”),一颗 m 阶的 B树是一棵平衡的 m 路搜索树。它或者是空树,或者是满足下列性质的树:若根结点不是叶子结点(那种情况只能是整个树就一个根节点),则至少有两棵子树...
2018-10-30 16:17:02 2544
转载 查找算法 | 红黑树详细分析
1 红黑树简介红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1978年发明,在当时被称为对称二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。红黑树具有良好的效率,它可在 O(logN) 时间内完成查找、增加、删除等操作。因此,红黑...
2018-10-30 09:57:18 1300 1
转载 排序算法 | 基数排序算法原理及实现和优化
基数排序不同于之前所介绍的各类排序,前边介绍到的排序方法或多或少的是通过使用比较和移动记录来实现排序,而基数排序的实现不需要进行对关键字的比较,只需要对关键字进行“分配”与“收集”两种操作即可完成。基数排序的原理例如对无序表 {50,123,543,187,49,30,0,2,11,100} 进行基数排序,由于每个关键字都是整数数值,且其中的最大值由个位、十位和百位构成,每个数位上的数字从 ...
2018-10-26 11:19:11 1543
原创 排序算法 | 桶排序算法原理及实现和优化
排序充斥着我们的生活,比如站队、排队买票、考试排名、公司业绩排名、将电子邮件按时间排序、QQ 好友列表中的会员红名靠前,等等。这里先举个例子,通过这个例子让我们接触第 1 个算法。在某个期末考试中,老师要把大家的分数排序,比如有 5 个学生,分别考 5、9、5、1、6 分(满分 10 分),从大到小排序应该是 9、6、5、5、1,大家有没有办法写一段程序随机读取 5 个数,然后对它们排序呢?...
2018-10-26 09:58:52 5270
原创 排序算法 | 堆排序算法原理及实现和优化
在学习堆排序之前,首先需要了解堆的含义:在含有 n 个元素的序列中,如果序列中的元素满足下面其中一种关系时,此序列可以称之为堆。ki ≤ k2i 且 ki ≤ k2i+1(在 n 个记录的范围内,第 i 个关键字的值小于第 2i 个关键字,同时也小于第 2i+1 个关键字)ki ≥ k2i 且 ki ≥ k2i+1(在 n 个记录的范围内,第 i 个关键字的值大于第 2i 个关键字,同时也大...
2018-10-25 10:10:58 606
原创 排序算法 | 快速排序算法原理及实现和优化(二)
接上文《数据结构和算法 | 快速排序算法原理及实现和优化(一)》,我们来讲讲快速排序的五种优化方案。1、优化选取基准点三数取中法:先找出三个关键字,然后排序,取中间的关键字(至少不会是两个极端)。在代码示例中我们选取相应区间的开始元素、中间元素和末尾元素。按照所选取的基准点的顺序可以构造一颗顺序二叉树。二叉树的深度就是递归的深度。二叉树的平衡性越好,算法的性能越好。2、优化不必要的交...
2018-10-23 18:03:53 400
转载 排序算法 | 快速排序算法原理及实现和优化(一)
快速排序是对冒泡排序的一种改进,由 C.A.R.Hoare(Charles Antony Richard Hoare,东尼·霍尔)在 1962 年提出。快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据要小,再按这种方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,使整个数据变成有序序列。快速排序的原理排序算法的思想非常...
2018-10-23 15:45:24 3035
转载 排序算法 | 归并排序算法原理及实现和优化
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。归并排序的原理归并排序的实现思想是:先将所有的记录完全分开,然后两两合并,在合并的过程中将其排好序并且将已有序的子序列合并,最终能够得到一个完整的有序表。例...
2018-10-23 13:25:22 988
转载 排序算法 | 希尔排序算法原理及实现和优化
希尔排序也是一种插入排序算法,也叫作缩小增量排序,是直接插入排序的一种更高效的改进算法。希尔排序因其设计者希尔(Donald Shell)的名字而得名,该算法在 1959 年被公布。一些老版本的教科书和参考手册把该算法命名为 Shell-Metzner,包含了 Marlene Metzner Norton 的名字,但是 Metzner 说:“我没有为这种算法做任何事,我的名字不应该出现在这个算法...
2018-10-23 11:16:20 1827
转载 排序算法 | 插入排序算法原理及实现和优化
插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。直接插入排序是插入排序算法中的一种,采用的方法是:在添加新的记录时,使用顺序查找的方式找到其要插入的位置,然后将新记录插入。很多初学者所说的插入排序,实际上指的就是直接插入排序算法,插入排序算法还包括折半插入排序、2-路插入排序,表插入排序和希尔...
2018-10-23 10:01:12 5630
转载 排序算法 | 简单选择排序算法原理及实现和优化
选择排序是一种非常简单的排序算法,就是在序列中依次选择最大(或者最小)的数,并将其放到待排序的数列的起始位置。简单选择排序的原理简单选择排序的原理非常简单,即在待排序的数列中寻找最大(或者最小)的一个数,与第 1 个元素进行交换,接着在剩余的待排序的数列中继续找最大(最小)的一个数,与第 2 个元素交换。以此类推,一直到待排序的数列中只有一个元素时为止。也就是说,简单选择排序可分为两部分,...
2018-10-22 15:45:34 3067
转载 排序算法 | 冒泡排序算法原理及实现和优化
冒泡排序(Bubble Sort)是排序算法里面比较简单的一个排序。它重复地走访要排序的数列,一次比较两个数据元素,如果顺序不对则进行交换,并一直重复这样的走访操作,直到没有要交换的数据元素为止。冒泡排序的原理为了更深入地理解冒泡排序的操作步骤,我们现在看一下冒泡排序的原理。首先我们肯定有一个数组,里面存放着待排序的元素列表,我们如果需要把比较大的元素排在前面,把小的元素排在后面,那么需要...
2018-10-22 09:41:53 489
小甲鱼小甲鱼数据结构课件与源码
2018-09-30
True Color 设置屏幕颜色 亲测 Windows 10 可以使用哦
2018-07-13
True Color 设置屏幕颜色 亲测 Windows 10 可以使用
2018-07-13
Effective Java(高效java )(中文第2版)+英文原版+随书源码
2018-01-12
jdk1.7.0_17.zip
2018-01-08
国家电力设备资源管理系统设计与实现_毕业论文全部资料 包含源码.zip
2018-01-06
国家电力设备资源管理系统设计与实现_毕业论文全部资料.zip
2018-01-06
Java 并发编程实战 高清完整版 带标签目录+随书源码.zip
2018-01-06
重构-改善既有代码的设计.chm
2018-01-06
大型网站技术架构 核心原理与案例分析 高清完整版 李智慧.pdf
2018-01-05
深入理解Java虚拟机 JVM高级特性与最佳实践 第2版 高清完整版 .pdf
2018-01-05
重构-改善既有代码的设计[高清完整版.完整书签].pdf
2018-01-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人