我尝试使用Javascript(Node.js)和Python编写了最大子数组的暴力算法解决方案。以下是我的代码:
使用Python:
from datetime import datetime
from random import randint
arr = [randint(-1000,1000) for i in range(1000)]
def bruteForce(a):
l = len(a)
max = 0
for i in range(l):
sum = 0
for j in range(i, l):
sum += a[j]
if(sum > max):
max = sum
return max
start = datetime.now()
bruteForce(arr)
end = datetime.now()
print(format(end-start))
还有JavaScript:
function randInt(start, end) {
return Math.floor(Math.random() * (end - start + 1))
}
var arr = Array(1000).fill(randInt(-1000, 1000))
function bruteForce(arr) {
var max = 0
for (let i = 0; i < arr.length; i++) {
var sum = 0
for (let j = i; j < arr.length; j++) {
sum += arr[j]
max = Math.max(max, sum)
}
}
return max
}
var start = performance.now()
bruteForce(arr)
var end = performance.now()
console.log(end - start)
JavaScript的结果大约是0.187秒,而Python则需要4.75秒,相比之下慢了约25倍。 我的代码没有进行优化还是Python真的比JavaScript慢这么多?