今天刷了几道常见算法题,这里简单MARK下。
数组去重
reduce
1 | function uniqueArr(arr) { |
set特性
1 | function uniqueArr(arr) { |
for loop
1 | function uniqueArr(arr) { |
冒泡排序
1 | function bubbleSort(arr) { |
取1000个数字里面的质数|素数
注意
- 如果一个数如果只能被 1 和它本身整除,这个数就是素数
- 1不是素数
第一种办法的开销应该是最大的,每个数字需要计算2到n-1。
初级方法
1 |
|
试除法-改进版
注意,Math.sqrt开根号效率低于乘法。
1 |
|
正则法-思路巧妙-不建议使用
高耗内存,了解即可。
1 | function isPrimeNumber3(index) { |
sieve of Eratosthenes-埃式筛法
1 | function getPrimeNumbers4(end) { |
各个算法耗时
在线代码
我将该算法托管在了codesandbox,点击即可查看
写在最后
之前一直没有重视算法,痛定思痛,决定刻意练习下。实际上算法无处不在,只是一部分被各种类库,工具折叠了,另一部分是因为认识不够,很多实现方案避开了而已,所以代价就是程序的开销变大。因此,加强基本功,走起。