![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
weixin_41318405
此人不懒,什么都留下了
展开
-
线性结构——链表面试题
一、从尾到头打印单链表法一:递归法void SListNodeRecurReversePrint(SListNode *pHead){ if (pHead == NULL) return; SListNodeRecurReversePrint(pHead->pNext); printf("%d <- ", pHead->data);}法二:常规法...原创 2018-06-16 23:30:31 · 174 阅读 · 0 评论 -
搜索结构——哈希
哈希函数设计:(1)直接定制法(2)除留余数法(3)数学分析发哈希冲突:不同的关键码通过相同的哈希函数计算得到相同的哈希地址称为哈希冲突。哈希冲突一个可能原因就是哈希函数设计不合理;如果哈希函数设计巧妙,哈希冲突可能性越低,但是不能够避免哈希冲突。哈希冲突的处理:闭散列和开散列闭散列闭散列也叫开放地址法,当发生哈希冲突时,如果哈希表未被装满,说明哈希表中还有空位置,那么可以吧ke...原创 2019-02-10 19:31:24 · 180 阅读 · 0 评论 -
常见排序算法
插入排序插入排序是一个数据向已经有序的数组中插入数据。见下图 插入排序时间复杂度:最好情况是接近有序O(N),最坏情况下是逆序O(N^2)。优化:可以采用二分查找查找元素应该插入的位置。 //插入排序//最好O(N)//最坏O(N^2)//可以采用二分查找void InsertSort(std::vector<int> &v){ int end =...原创 2019-02-15 23:06:18 · 158 阅读 · 0 评论 -
搜索结构——二叉搜索树
一、二叉搜索树的概念(1)若它的左子树不为空,则左子树上所有节点的值都小于根节点值(2)若它的右子树不为空,则右子树上所有节点的值都大于根节点值(3)它的左右子树都是二叉搜索树从概念可以看出二叉搜索树的中序遍历是有序排列的,而且没有重复元素。在实际应用当中也是根据这一特点是否采用二叉搜索树。二、二叉搜索树的操作查找操作如果根节点不为空:(1)如果根节点值等于key,返回t...原创 2019-02-05 21:40:24 · 214 阅读 · 0 评论 -
海量数据处理
当我们拿到一个题是海量数据问题,内存不能够同时处理,首先考虑特殊数据结构能否处理比如:位图和布隆过滤器。如果不能处理我们一般需要把大的文件哈西切割为几份,在分别处理。哈希切割——top K问题 给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?如何找到top K的IP?如何直接用Linux系统命令实现? 我的思路:100G大小的文...原创 2019-02-14 17:50:45 · 129 阅读 · 0 评论 -
内存堆和数据结构堆区别
在内存空间有堆内存,栈内存。数据结构中也存在堆结构,栈结构。两者本质没有什么联系。内存中堆和栈是存储数据的,而数据结构中的堆和栈是用来组织数据的一种工具。...原创 2019-01-28 11:36:56 · 1866 阅读 · 0 评论 -
二叉树的前中后非递归遍历
一、前序非递归遍历 //二叉树难点(非递归)//非递归前序遍历void PreOrderLoop(BinTreeNode *root){ if(root == NULL) return; Stack *s = NULL; BinTreeNode *cur = root; while(cur != NULL || StackIsEmpty(s) != 0)...原创 2018-04-22 12:05:22 · 227 阅读 · 0 评论 -
搜索结构——位图
github地址:https://github.com/ALXlixiong/bitmap1引:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 【腾讯】 我的思路:拿到这道题首先想到的就是暴力求解法(O(N)),但是效率太慢;其次可从题中知40亿个数字无序,所以第二种思路就是排序+二分查找(O(NlgN)+O(lgN));还有一种思路...原创 2018-03-26 00:19:21 · 235 阅读 · 0 评论 -
二叉搜索树
github地址:https://gitee.com/sustlixiong/BSTree一、概念左子树节点值小于根节点值;右子树结点值大于根结点值;搜索二叉树的中序是有序的。二、结构体定义typedef int DataType;typedef struct BSTreeNode{ DataType data; struct BSTreeNode *left; ...原创 2018-09-24 15:48:07 · 89 阅读 · 0 评论 -
线性结构——静态顺序表and动态顺序表
#pragma warning(disable:4996)#include<stdio.h>#include<stdlib.h>#include<assert.h>#define MAX_SIZE 20typedef int DataType;typedef unsigned size_t;//建立一个静态顺序表typedef struct...原创 2018-06-09 23:29:47 · 153 阅读 · 0 评论 -
搜索结构——布隆过滤器
引:40亿个字符串集合,快速判断某个字符串是否存在 位图适用于整形,布隆过滤器适用于任何类型;什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,...原创 2019-02-11 18:06:00 · 383 阅读 · 0 评论