js数据结构与算法--散列

不扯淡了,还是来学技术吧。

散列,是一种常用的数据存储技术,优势在于可以快速的插入或取出,使用它的数据结构,叫散列表。

它的优势哈,插入、删除、取用数据都很快,但对于查找却效率低下。

(书上原话,我不太懂,取用和查找不是一回事吗?不得找到了才能用么?)

散列表在JS里只能是基于数组来进行设计了。它的数据存储是和该元素对应的键,并保存在数组的特定位置。感觉和对象很类似。

在存储的时候,通过散列函数将键映射为一个数字,这个数的范围是0至散列表的长度。

说了半天,有点绕,我都有点晕。先上个图看看,

这个就是散列表,书中第88页,

这是一个简单的电话本,把名字d,u,r,r这四个字母的ASCII码加在一起,413(键)。就把散列值和名字Durr(值)对应起来了。

散列函数有时会重复,因为也许会有另外几个字母的ascii值相加也等于413,这就是把二个键映射成一个值了,这就叫碰撞

另外一个知识点就是,编写散列函数时对数组大小的考虑,一般来讲,数组长度应该是个质数。

/****/

质数:指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。

--百度查的

javascript 算法初识

原文发布于微信公众号 - web前端教室(webfeel)

原文发表时间:2016-03-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

第九节 Go语言循环语句

干货来了!!!为了让更多的小伙伴喜欢Golang、加入Golang之中来,Golang语言社区发起人彬哥联合业界大牛共同推出了Go语言基础、进阶、提高课程,目前...

832
来自专栏ACM算法日常

最高的牛Tallest Cow(前缀和)- POJ 3263

FJ's N (1 ≤ N ≤ 10,000) cows conveniently indexed 1..N are standing in a line. E...

1071
来自专栏Java帮帮-微信公众号-技术文章全总结

Java面试系列1

Java面试系列1 1 静态变量和实例变量的区别? 静态变量也称作类变量,由static修饰,如:static int s; s就是静态变量,它只能通过类来访...

2775
来自专栏大史住在大前端

javascript基础修炼(2)——What's this(上)

this是javascript关键字之一,是javascript能够实现面向对象编程的核心概念。用得好能让代码优雅高端,风骚飘逸,用不好也绝对是坑人坑己利器。我...

811
来自专栏Phoenix的Android之旅

重构 - 完全不用 if-else 可能吗?

上次那篇重构-为什么 if-else 不是好代码 说到代码中的 if-else会随着代码量的增加,在迭代的过程中变的越来越难以维护, 然后用工厂模式的思路可以把...

832
来自专栏青玉伏案

PHP精选数组函数

编程怎么能少的了数组呢,以下是学习PHP时常用的数组处理函数。在编程中要遵循一个原则就是DRY(Don`t Repeat Yourself)原则,PHP中有大...

2178
来自专栏怀英的自我修炼

Java漫谈8

今天我们来聊聊字符串。 字符串,在Java中一个最接近与8大数据类型的存在。甚至于由于它太好用了,以至于在编写代码的时候都快忘了有个叫char的基本数据类型了。...

35410
来自专栏程序你好

Java和c++构造函数的区别是什么?

如果你是一个c++程序员,现在正在学习Java,你会发现这两种流行的面向对象编程语言有很多相似之处。这两种语言都支持抽象、封装、类、对象和其他OOP概念。但是,...

974
来自专栏带你撸出一手好代码

编程语言函数多返回值处理方式排名

一个函数一个返回值 , 这好像跟祖宗定下的规则似的,各个时代主流编程语言几乎都严格遵守着。然而, 在实际情况下, 程序员写代码经常会碰到一个函数会返回多个返回值...

3707
来自专栏斑斓

当函数成为一等公民时,设计模式的变化

GOF提出的设计模式,其本质思想是封装变化。故而,创建型模式封装的是对象创建的变化,结构型模式封装的是对象之间的协作与组合结构,行为型模式则封装了对象行为的变化...

3085

扫码关注云+社区