Closed wklzz closed 5 years ago
从严格的角度来说,这个实现应该已经是很棒了,不会有遗漏。但是从实用的角度来说,当元素个数很多时,性能也会随着元素个数的增加而线性的降低。如果能够做到不论元素个数多少,最后的性能都可以控制在 0.02 - 0.05 毫秒以内会不会更好呢?比如如果元素个数不足100个,则循环全部遍历。如果元素超过100个,对前30个遍历,后30个遍历,中间30个遍历,然后对不同位数的下标,只取几个键进行判断,也就是说,当元素个数超过 100 个以后,不论元素个数有多少个,把判断的个数控制在 100 个左右。这样就已经可以足够准确,又足够快了。毕竟当数组元素个数达到这个级别的时候,又能满足上面这些判断条件,还能是联合数组的可能性已经很低很低,在实际应用中,基本上不可能遇到这种情况了。
老哥,你赢了
值全部为null 随机数组长度:1001 bool(true)
0.54597854614258毫秒 随机数组长度:10001 bool(true)
5.4149627685547毫秒 随机数组长度:100001 bool(true)
53.807973861694毫秒 随机数组长度:1000001 bool(true)
539.38508033752毫秒
值为非null 随机数组长度:1001 bool(true)
0.26702880859375毫秒 随机数组长度:10001 bool(true)
2.6021003723145毫秒 随机数组长度:100001 bool(true)
25.269031524658毫秒 随机数组长度:1000001 bool(true)
251.67989730835毫秒
树莓派3B