算法分析
文章平均质量分 52
空杯心态_虚怀若谷
空杯心态_虚怀若谷
展开
-
B*树简介
B*树是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针; B*树定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3(代替B+树的1/2); B+树的分裂:当一个结点满时,分配一个新的结点,并将原结点中1/2的数据复制到新结点,最后在父结点中增加新结点的指针;B+树的分裂只影响原结点和父结点,而不会影响兄弟结点,所以它不需要指向兄弟的指原创 2016-06-27 17:06:15 · 237 阅读 · 0 评论 -
各种排序算法的总结和比较
转自:http://blog.csdn.net/tanggao1314/article/details/506677621 快速排序(QuickSort)快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。(1) 如果不多于1个数据,直接返回。(2) 一般选择序列最左边的值作为支点数据。(3) 将序列转载 2017-03-27 12:27:17 · 143 阅读 · 0 评论 -
必须掌握的八种排序(7-8)--归并排序,基数排序
转自:http://blog.csdn.net/tanggao1314/article/details/506880797、归并排序(1)基本排序:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。(2)理解图: 盗张图,这张图很好理解递归分解转载 2017-03-27 12:23:17 · 208 阅读 · 0 评论 -
必须掌握的八种排序(5-6)--冒泡排序,快速排序
转自:http://blog.csdn.net/tanggao1314/article/details/506822785、冒泡排序(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。(2)理解图转载 2017-03-27 12:06:18 · 206 阅读 · 0 评论 -
必须掌握的八种排序(3-4)--简单选择排序,堆排序
转自: http://blog.csdn.net/tanggao1314/3、简单选择排序(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(2)理解图第一次 : 08最小 和21交换位置 第二次: 除第一个位置的08转载 2017-03-27 11:28:49 · 228 阅读 · 0 评论 -
必须掌握的八种排序(1-2)--插入排序,希尔排序
转载:http://blog.csdn.net/tanggao1314/很多人算法和数据结构不好,归根结底就是基础不扎实,算法和数据结构不好的话,达到的高度肯定不会很高,最近重新加强了一下自己的算法基础,决定从最基础的内容开始,如有不足的地方,欢迎指正。排序方法可以分为五种∶插入排序、选择排序、交换排序、分配排序和归并排序。 在排序过程中,全部记录存放在内存,则称为内排序,转载 2017-03-27 11:20:20 · 179 阅读 · 0 评论 -
堆与堆排序简介
目录(?)[-]二叉堆的定义堆的存储堆的操作插入删除堆的插入堆的删除堆化数组堆排序 堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节转载 2016-09-02 10:02:17 · 248 阅读 · 0 评论 -
快速排序简介
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速转载 2016-09-02 09:21:38 · 121 阅读 · 0 评论 -
B-树简介
B-树是一种多路搜索树(并不是二叉的): 1.定义任意非叶子结点最多只有M个儿子;且M>2; 2.根结点的儿子数为[2, M]; 3.除根结点以外的非叶子结点的儿子数为[M/2, M]; 4.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字) 5.非叶子结点的关键字个数=指原创 2016-06-22 15:44:21 · 239 阅读 · 0 评论 -
B+树简介
B+ 树的优点在于:由于B+树在内部节点上不好含数据信息,因此在内存页中能够存放更多的key。 数据存放的更加紧密,具有更好的空间局部性。因此访问叶子几点上关联的数据也具有更好的缓存命中率。B+树的叶子结点都是相链的,因此对整棵树的便利只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。但是B树也有优点,其优点在于,由于B树的每一个节点都包含key和value,因此经常访问的元素原创 2016-06-17 11:53:28 · 415 阅读 · 0 评论 -
B树简介
b树又称二叉搜索树,英文全称binary search tree ,其定义如下:1、每个节点最多能拥有2个子节点(即每个非叶子节点最多拥有2个指针指向左右节点);2、非叶子节点的左指针指向小于其关键字的左子树,右指针指向大于其关键字的又子树;3、每个节点节点存储一个关键字;查找过程:b树的搜索从根节点开始:如果查找的关键字和节点的关键字相等则命中,查找成功;如果原创 2016-06-17 11:07:48 · 637 阅读 · 0 评论 -
二分查找简介
二分查找简介原创 2016-06-17 15:32:54 · 74 阅读 · 0 评论 -
外部排序算法整理
的。于是乎谷狗了一下,学习了学习维基百科上关于外排的介绍,感觉还不错,确实解决了心中的疑问。其中,外归并排序和置换选择排序都讲得很清楚,还提供了一些不错的链接,如Jim Gray的Sort Benchmark网站,故在博客中Mark一下,以表感谢!原文地址:http://zh.wikipedia.org/zh/外排序外排序(External sorting)是指能够处理转载 2016-07-13 17:50:17 · 301 阅读 · 0 评论 -
排序算法——快速排序简介
快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。原创 2016-06-30 09:26:32 · 79 阅读 · 0 评论 -
快速排序简介
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列转载 2016-07-10 22:13:52 · 192 阅读 · 0 评论 -
教你如何迅速秒杀掉:99%的海量数据处理面试题
作者:July出处:结构之法算法之道blog前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。 毕竟受文章和理论之限,本文将摒弃绝转载 2017-05-22 19:20:46 · 184 阅读 · 0 评论