题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 /* C++ 循环 实现 要打印成一行,即用动态数组存储即可 这道题考的是广度优先遍历算法,这个算法是用队列这种数据结构实现的。 STL中的deque是“两端都可以进出”的队列, ...
分类:
其他好文 时间:
2017-08-07 16:40:03
阅读次数:
102
对于Java中的各种集合类,根据底层的具体实现,小结了一下大致有3种扩容的方式: 1、对于以散列表为底层数据结构实现的,(譬如hashset,hashmap,hashtable等),扩容方式为当链表数组的非空元素除以数组大小超过加载因子时, 链表数组长度变大(乘以2+1),然后进行重新散列。 2、对 ...
分类:
编程语言 时间:
2017-08-03 22:07:08
阅读次数:
392
1 简单介绍将内存作为首要存储介质不是什么新奇事儿,我们身边有非常多主存数据库(IMDB或MMDB)的样例。在对主存的使用上,内存数据网格(In Memory Data Grid。IMDG)与IMDB相似。但二者在架构上全然不同。IMDG特性能够总结为下面几点:Ø 数据是分布式存储在多台server ...
分类:
其他好文 时间:
2017-06-17 20:41:24
阅读次数:
328
一、什么是递归调用 递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。 使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈 ...
分类:
其他好文 时间:
2017-06-02 13:27:34
阅读次数:
142
一、问题描述 ①在箱子装载问题中,有若干个容量为c的箱子和n个待装载入箱子中的物品。物品i需占是s[i]个单元(0<s[i]<=c)。所谓成功装载(feasible packing),是指能把所有物品都装入箱子而不溢出,而最优装载(optimal packing)是指使用了最少箱子的成功装载。对于箱 ...
分类:
编程语言 时间:
2017-04-27 00:35:51
阅读次数:
274
散列算法的作用是尽可能快地在数据结构中找到一个值。如果数据很大,但是有需要遍历整个数据结构来查找到该值,花费的时间就太多了。所以散列表在查找方面中比较优势:使用散列函数,就知道具体位置,能够快速检索。散列函数的作用:给定一个key值,返回key值在表中的地址。 上述HashTable函数中,有一个很 ...
分类:
编程语言 时间:
2017-04-22 17:37:33
阅读次数:
227
Redis 对象系统1. 介绍redis中基于双端链表、简单动态字符串(sds)、字典、跳跃表、整数集合、压缩列表、快速列表等等数据结构实现了一个对象系统,并且实现了5种不同的对象,每种对象都使用了至...
分类:
其他好文 时间:
2017-04-21 19:28:49
阅读次数:
303
前言
实现清单
链表实现
总结前言算法和数据结构是一个亘古不变的话题,作为一个程序员,掌握常用的数据结构实现是非常非常的有必要的。实现清单实现链表,本质上和语言是无关的。但是灵活度却和实现它的语言密切...
分类:
编程语言 时间:
2017-04-06 16:00:09
阅读次数:
256
c++中的std::set,是基于红黑树的平衡二叉树的数据结构实现的一中容器,因为其中所包含的元素的值是唯一的,因此主要用于去重和排序。这篇文章的目的在于探讨和分享如何正确使用std::set实现去重和排序功能。 1.方法一:使用std::set内置的less比较函数(直接定义内置类型的set对象) ...
分类:
编程语言 时间:
2017-04-04 19:02:26
阅读次数:
347
STL中priority_queue优先队列采用堆数据结构实现。堆算法具有nlog(n)的算法时间复杂度,底层采用vector实现堆的数据机构。默认为根节点大于左右子树值即最大堆。 1、元素入堆:push_heap(first,last [,comp]) 辅助函数:push_heap(first,h ...
分类:
其他好文 时间:
2017-03-10 12:44:36
阅读次数:
218