摘要: 二分排序与二分查找二分排序与二分查找分类:C++2012-03-23 08:29 139人阅读评论(0)收藏举报1、规定排序的实现 分治法的三步法: 划分问题:(把序列二分), 递归求解:(分别对左右子序列递归排序) 合并结果:(根据左右两个有序的子序列,依次取两个子序列的最小元素中的最小者加到结果中去) 实现如下:#include<iostream>usingnamespacestd;voidmergeSort(int*a,intx,inty,int*t)//归并排序,t为辅助空间if(y-x>1)//由于是区间[x,y),非空则有y-x>=1,而1个元素的子序列已经 阅读全文
posted @ 2012-07-17 20:48 starrynight 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 常见hash算法的原理分类:算法和数据结构2011-11-22 13:12 752人阅读评论(0)收藏举报散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。比如我们存储70个元素,但我们可能为这70个元素申请了100个元素的空间。70/100=0.7,这 阅读全文
posted @ 2012-07-17 20:42 starrynight 阅读(134) 评论(0) 推荐(0) 编辑
摘要: hash算法hash定义:把任意长度的输入,通过hash算法,变换成固定长度的输出。输出的空间通常远小于输入值的空间。 数学表达式:h = H(M) 其中H()为单向hash算法,M为任意长度输入,h为固定长度的输出一般应用的Hash算法,还需要满足其他关键特性:第一当然是单向性(one-way),从预映射,能够简单迅速的得到散列值,而在计算上不可能构造一个预映射,使其散列结果等于某个特定的散列值,即构造相应的M=H-1(h)不可行。这样,散列值就能在统计上唯一的表征输入值,因此,密码学上的 Hash 又被称为"消息摘要(message digest)",就是要求能方便的将 阅读全文
posted @ 2012-07-17 20:39 starrynight 阅读(317) 评论(0) 推荐(0) 编辑
摘要: .Net提供了接口,这个不同于Class或者Struct的类型定义。接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类。其实不然,接口和抽象类各有长处和缺陷,因此往往在应用当中,两者要结合来使用,从而互补长短。接下来先说说抽象类和接口的区别。区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。这些听起来有些虚,举个例子。例如,狗是对于所有狗类动物的统称,京哈是狗,牧羊犬是狗,那么狗的一般特性,都会在 阅读全文
posted @ 2012-07-17 20:36 starrynight 阅读(143) 评论(0) 推荐(0) 编辑