二分查找,应用的场景是在一个排序的序列中,查找指定的数的位置。复杂度为O(logn).常用的包括递归的方法,如下:def binarySearch(data, x, start, end): if start>end: return -1 mid = start + (end-start)/2 #....
分类:
其他好文 时间:
2015-04-27 21:25:51
阅读次数:
84
数组是最常用的数据结构,几乎在所有的编程语言中都会出现。在C#里用数组的话需要建立一个System.Array类型的对象,它是所有数组的抽象基类。Array类提供了一组排序和查找的方法另一个可以建立数组的替代品是ArrayList,ArrayList是可以按需要动态增长的数组。在不能确定一个数组的大...
分类:
编程语言 时间:
2015-04-27 21:23:40
阅读次数:
264
深度优先和广度优先遍历在树和图中应用最为普遍,思想也类似,因此放到一起来总结。二叉树的深度优先广度优先遍历:一棵二叉树(2,(2(3,4),3(4,5))),这是一棵满二叉树,一共有7个节点,根节点2,深度为3数据结构定义如下:class Node: def __init__(self, value...
分类:
其他好文 时间:
2015-04-27 21:18:28
阅读次数:
129
AVL树为了防止树的深度过深出现的一种数据结构,在二叉树的基础上添加了一条规则:每个节点的左子数与右子树的高度最多差1。其中的难点之一为:插入一个节点。删除一个节点更难,在这里采用懒惰删除法。其中,在插入的时候更新根节点路径上那些节点的所有高度。AVL节点:struct AvlNode{ El...
分类:
其他好文 时间:
2015-04-27 20:06:18
阅读次数:
135
Redis 服务器Remote Dictionay Server Redis是一个key-value持久化产品,通常被称为数据结构服务器。Redis的key是string类型;value可以是string、hash、list、set、sorted set等类型;实际上,Redis内部会将key和va...
分类:
其他好文 时间:
2015-04-27 20:02:07
阅读次数:
123
快排应该是数据结构中排序中最重要的一个,包括其中的patition思想,以及后面的整体的分治思想,都对于解决实际问题有很大的借鉴。快速排序是一种交换排序的方法,不稳定,也就是说如果两个相同的数,快排之后二者可能交换位置。1.首先来看partition函数,函数名partition(data, l, ...
分类:
编程语言 时间:
2015-04-27 19:59:23
阅读次数:
113
栈是先进后出的,队列是先进先出的。栈顶在上面,栈是向上生长的,每次数据操作是压栈,最后的数据元素指向栈顶。实例:用两个栈实现队列题目:用两个栈实现一个队列,队列的声明如下,请实现他的连个函数,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 1 templateclass CQueue 2 {...
分类:
其他好文 时间:
2015-04-27 19:58:59
阅读次数:
151
随着redis的发展,越来越多的架构用它取代了memcached作为缓存服务器的角色,它有几个很突出的特点:1. 除了Hash,还提供了Sorted Set, List等数据结构2. 可以持久化到磁盘3. 支持cluster (3.0)它的性能和memcached不相上下,再加上流行的其他组件(比如...
分类:
其他好文 时间:
2015-04-27 19:53:54
阅读次数:
98
开始的地方先放上关于二叉树的定义二叉树:是n(n>=0)个结点的有限集合,它或者是空树(n=0),或者是由一个根结点及两颗互不相交的、分别称为左子树和右子树的二叉树所组成。满二叉树:一颗深度为k且有2^k-1个结点的二叉树称为满二叉树。除叶子结点外的所有结点均有两个子结点。节点数达到最大值。所有叶子...
分类:
其他好文 时间:
2015-04-27 19:40:27
阅读次数:
130
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
/**********************************************************************
* Copyright (c)2015,...
分类:
其他好文 时间:
2015-04-27 18:32:49
阅读次数:
129