一、数组:
1、数组进行插入操作时,效率不高
2、数组进行查找操作的效率
(1)、如果是基于索引进行查找效率非常高
(2)、基于内容去查找,效率不高
3、数组进行删除操作,效率不高
二、哈希表:
1、 哈希表是基于数组进行实现的,相对于数组,它有很多优势:
(1)、可以非常快的 插入-删除-查找
(2)、哈希表的速度比树还要快,基本可以瞬间查找到想要的元素
2、哈希表的特点:
(1) 哈希表中的数据是没有顺序的。
(2) 哈希表中的key是不允许重复的。
哈希函数:
霍纳算法类似于我国的秦九韶算法
哈希函数的封装
// 设计哈希函数
// 1、将字符串转成比较大的数字:hashCode
// 2、将大的数字hashCode压缩成数组范围之内
function hashFunc(str, size) {
// 1.初始化hashCode的值
var hashCode = 0
// 2.霍纳算法, 来计算hashCode的数值
for (var i = 0; i < str.length; i++) {
hashCode = 37 * hashCode + str.charCodeAt(i)
}
// 3.取模运算
var index = hashCode % size
return index
}
alert(hashFunc("abc", 7)) // 4
alert(hashFunc("cba", 7)) // 3
alert(hashFunc("nba", 7)) // 5
alert(hashFunc("mba", 7)) // 1
质数:
质数也称为素数
质数表示大于1的自然数中,只能被1和自己整除的数,
也就是说不能被2到num - 1之间的数字整除
写法1(效率不高):
function isPrime(num) {
for (var i = 2; i < num; i++) {
if (num % i == 0) {
return false
}
}
return true
}
写法2(效率高):
function isPrime(num) {
// 1.获取平方根
var temp = parseInt(Math.sqrt(num))
// 2.循环判断
for (var i = 2; i <= temp; i++) {
if (num % i == 0) {
return false
}
}
return true
}
// 测试
alert(isPrime(