数据结构
hg2016
这个作者很懒,什么都没留下…
展开
-
冒泡排序的三种优化
传统的冒泡排序完全可以满足我们最基本的需求,但是也仅仅是最简单的需求,这种简单的两个for循环不加任何的判断语句的形式注定它只能是一种效率最低的算法。我们先贴一个传统的实现方式,之后的三个优化全部建立在函数排序所使用的消耗上,这也是我们优化一切算法的根本路径。void BubbleSort(int* arr,int size){ for(int i=0;i<size;i++) {原创 2016-11-22 07:55:20 · 11943 阅读 · 1 评论 -
大数据面试题分析
最近学习了hashtable的一点知识,发现可以用来解决大数据的一些问题。我们这里讲的大数据分析事实上并不是分布式和数据挖掘这些高深的概念,而是针对从从一个大文件或者一堆数据(内存放不下)中找出具有某种特点的数,这也是近年来各大公司经常考的问题。面试题1:给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?解析:100G的文件给我原创 2016-11-12 14:43:21 · 2299 阅读 · 0 评论 -
c++用栈的方法解决迷宫问题
走迷宫算法原创 2016-09-10 22:59:12 · 5499 阅读 · 1 评论 -
c++实现双向链表,类模板双向链表
c++实现双向链表的思想和c很类似,不同的是c++是将实现的函数放在类中,这样就可以由类实例化出对象再调用类中的函数进行添加、删除、查找、插入元素等功能。类模板实现双向链表在最后进行说明和实现,方法依然类似。c++实现双向链表#include#includeusing namespace std;typedef int Datatype;typedef原创 2016-09-06 20:10:23 · 11549 阅读 · 0 评论 -
两个栈实现一个队列&两个队列实现一个栈
这两个题的思路比较相似。栈的特点是“先进后出”,队列的特点是“先进先出”。不要怕!这两个题都很简单。原创 2017-07-18 15:13:11 · 333 阅读 · 0 评论 -
二叉树的基本实现(一)
这一篇博客我总结一下部分二叉树的基本操作:1、根据数组递归创建二叉树2、递归实现前序遍历3、递归实现中序遍历4、递归实现后序遍历5、两种方法实现层序遍历6、递归实现求深度7、递归实现求最远两个节点距离8、递归实现查找节点二叉树的这些递归实现都可以非递归实现,下一篇博客会贴出来头文件typedef struct BinaryTreeNode{原创 2017-07-19 21:13:33 · 458 阅读 · 0 评论 -
堆和栈的区别
1.申请方式:栈是由系统自动分配,堆是由程序员自己开辟,并指明大小2.申请后的响应:只要剩余的栈空间大于申请的大小,系统就会自动开辟,否则报错提示栈溢出。 操作系统会为空闲的堆内存维护一个链表,开辟的时候回遍历一次这个链表如果找到一个节点指向合适的内存大小,就会将这个节点删除并分配给程 序,另外会在这次分配内存的首地址处标记分配内存的大小,这样在delete的时候就会原创 2017-08-14 13:48:42 · 325 阅读 · 0 评论