数据结构
文章平均质量分 78
iteye_18070
这个作者很懒,什么都没留下…
展开
-
详解PHP中Array结构HashTable
我们知道PHP中的Array在内部是以Hash的结构进行存储的。本文主要重点也是对PHP中Array的静态结构和动态结构进行分析和记录。这里的静态结构,是指存储PHP中Array数据时使用的数据结构,即所谓的HashTable。动态结构,是指程序在运行过程中,Array数据的存储状态。 首先PHP中的hashTable的结构如下:typedef struct bucket ...原创 2011-07-12 19:44:30 · 150 阅读 · 0 评论 -
DJBX33A哈希函数实现——Bash
DJBX33A 哈希函数又叫做time33 哈希函数,PHP、Perl、Apache中都是用该方法做为其哈希函数的实现。 本文就对该哈希函数做一简单的介绍,并用Bash对其进行实现。 该方法十分简单,将字符串中的每个字符的ascii码迭代*33加在一起即可。即hash(i)=hash(i-1)*33+ascii(i)。 假如字符串为:abc,则结果就是hashCod...原创 2012-06-13 21:48:22 · 202 阅读 · 0 评论 -
Java中的Arrays.sort 分析及其非递归实现——Bash
上篇文章我们讨论了快速排序算法,它与归并算法同属分治算法的一种。两者在实现上很相似,都使用了分治递归的策略来实现。 相信大家对快排和归并排序都不陌生,不过我们平常接触到的一般是这两种算法的递归实现方式。以Java为例,其Arrays类中的sort在排序Object的时候用的就是归并排序。不过其在实现上做了优化,在子问题足够小时(每个递归子序列长度不大于7)通过插入排序完成这...2012-06-01 22:31:50 · 79 阅读 · 0 评论 -
快速排序的非递归实现 --Bash
写blog的好处是,琢磨过的东西不用再琢磨第二次了。 快速排序算法的非递归实现: #!/bin/bashdeclare -a inputArray=(2 3 5 0 1 5 7 1 2 9 0);declare -a startStack;declare -a endStack;#init inputArray randomlyfor((i=0;i&l...2012-05-26 14:05:12 · 140 阅读 · 0 评论 -
关于数组指针和指针数组
在C/C++的编程中,对指针的使用和了解,再熟悉都不为过。C/C++毫无疑问的十分强大,但离开了指针和数组,它们就什么都干不了了,可见其重要。 使用数组和指针来描述数据,是C/C++编程中最常见的工作。本文通过一个描述二维数据的问题,来回顾下数组和指针的使用。 假设我们要表示的是一个5行3列的数据,则共有如下五种常用方式。每种方式各有优缺点以及适用场景。 ...原创 2013-07-30 21:01:54 · 145 阅读 · 0 评论 -
两种求集合所有子集的方法--Bash实现
假设我们有一个求集合的全部子集(包含集合自身)的需求,即有一个集合s,包含两个元素 <a,b>,则其全部的子集为<a,ab,b>.不难求得,子集个数sn与原集合元素个数n之间的关系为:sn=2^n-1。 本文分别讲述两种实现方法: 一:位图法:1)构造一个和集合一样大小的数组A,分别与集合中的某个元素对应,数组A中的元素只有两种状态:“1”和“0”...原创 2012-04-30 23:33:41 · 324 阅读 · 0 评论 -
基于堆 [Heap] 结构的 TopK 问题实现
在实际工作中我们经常会遇到将一个list中最大[最小]的前TopK个元素输出的问题。比如说在电商领域,求上个月卖的最好的前10个商品,或者是每个品类下卖的最好的前10个商品。 这类问题,很多数据库或数据仓库工具可以提供直接的实现,比如第一个问题在mysql中就直接order by + limit就好; 而第二个问题在Hive中也很简单, distribute + order by ...原创 2013-06-30 15:50:34 · 207 阅读 · 0 评论 -
C语言实现HashTable
C语言的少即是多: 从语言内容来讲,C绝对是足够精炼的,它提供且仅提供了我们工作所必须的编程元素。从可以实现的功能以及能为我们提供的代码管理和性能支持上来看,它也做的恰到好处。没有C++的繁琐、比脚本及所谓的OO语言更高效、当然也比汇编更容易理解。 不过对于用惯了Java的HashMap、LinkedHashMap,Python的Dict,以及PHP的Array 的同学...原创 2013-05-18 00:18:53 · 413 阅读 · 0 评论 -
关于distinct 和group by的去重逻辑浅析
在数据库操作中,我们常常遇到需要将数据去重计数的工作。例如:表A,列colACABCDAB 结果就是一共出现4个不同的字母A、B、C、D即结果为4大体上我们可以选择count(distinct col)的方法和group+count的方法。分别为:select count(distinct col) from A;select co...2012-03-22 00:32:14 · 2868 阅读 · 0 评论 -
PHP中Array的hash函数实现
今天回顾学习了PHP中变量实现的方法,在浏览其源码是发现在PHP中所有的数据类型通过一个union存储。php语言是弱类型语言,其实现中通过记录变量的类型和值来实现其管理。 PHP中使用最多的非Array莫属了,那Array是如何实现的?在PHP内部Array通过一个hashtable来实现,其中使用链接法解决hash冲突的问题,这样最坏情况下,查找Array元素的复杂度为O(N...2011-05-10 21:49:57 · 268 阅读 · 0 评论 -
会计记账小程序
许久不来,手都有些生疏了。写个小程序热热手先。 假设有一个数字,可以很大,理论上可以无限大。要如何转成其对应的汉子大写? 就是那种支票本上、汇款单上的那种大写金额。 例如: 数字:193817071803800182801088108 大写:壹佰玖拾叁亿捌仟壹佰柒拾万柒仟壹佰捌拾亿叁仟捌佰万壹仟捌佰贰拾捌亿零壹佰零捌万捌仟壹佰零捌 代码...原创 2015-12-10 10:38:01 · 583 阅读 · 0 评论