数据结构
no_name_sky
这个作者很懒,什么都没留下…
展开
-
快速排序算法分析
快速排序:它的基本思想是:找出一个元素(理论上可以在所有值中随便找一个)作为基准,通过一趟排序将要排序的数据分割成独立的两部分,基准左边的数据都小于基准值,右边的部分都大于基准值,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。用图来说明一下:平均时间复杂度:O(N*lgN)最坏时间复杂度:O(N*N) (若每次找到基准是最原创 2017-05-03 14:46:45 · 333 阅读 · 0 评论 -
位图和哈希切分的大数据处理
位图是一个数组的每个数据的每个二进制位表示一个数据,0表示数据不存在,1表示数据存在;在现实生活中,大数据的处理十分的常见;比如说,给40亿个不重复的无符号整数,没排过序,如何快速判断一个数是否在这40亿个数中?要解决这个问题,我们首先想到的是先排序,在进行二分查找,很容易就可以判断成功。但是排序并不好排,40亿个数据,让我们来算一算需要多少的内存,40亿*4字节 = 4G*4 = 16原创 2017-04-25 12:29:58 · 1746 阅读 · 0 评论 -
大数据处理题型分析
大数据处理,顾名思义,数据量非常大,有些可以一次处理,有些需要分割后对其进行处理。解决这类题型的第一点就是要算出其所需空间的大小;1.给定100亿个整数,设计算法找到只出现一次的整数;解题思路:有100亿个整数,一个整数4字节,共所占空间:100亿*4字节 = 10G*4 = 40G;所有整数的范围为0到42亿9千万;需要找到只出现一次的整数,那么我们就可以直接断定一个数出现的状态就有原创 2017-04-25 15:43:42 · 921 阅读 · 0 评论 -
B-树的插入和遍历
B-树是一种平衡的多叉树,一颗M阶(M>2)的B树,是一颗平衡的M路平衡搜索树,可以是空树或者满足下列性质:1. 根节点至少有两个孩子2. 每个非根节点有[ [M/2],M]个孩子3. 每个非根节点有[ [M/2] -1,M-1]个关键字,并且以升序排列4. key[i]和key[i+1]之间的孩子节点的值介于key[i]、key[i+1]之间5. 所有的叶子节点都在同一层原创 2017-05-08 14:21:34 · 3804 阅读 · 0 评论 -
直接插入排序和希尔排序
插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。直接插入排序:每次将一个待排序的元素,与已排序的元素从尾到头进行比较,找到合适位置进行插入;对一个乱序数组进行排序,将第一个元素看作是有序数组,后面的元素是待插入元素,进行直接插入排序,在这个有序数组的基础上插入后面的数据,直到所有数据全部直接插入排序完成。voi原创 2017-05-08 18:45:51 · 297 阅读 · 0 评论 -
倒排索引
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。现在这里有三个英文文件:file1(sort,hello....)file2原创 2017-04-26 13:50:24 · 369 阅读 · 0 评论