目前我正在实现一些排序算法.由于算法的本质,使用len()
方法对某些数组/切片的长度进行了大量调用.
现在,给出Mergesort算法(部分)的以下代码:
for len(left) > 0 || len(right) > 0 {
if len(left) > 0 && len(right) > 0 {
if left[0] <= right[0] {
result = append(result, left[0])
left = left[1:len(left)]
} else {
result = append(result, right[0])
right = right[1:len(right)]
}
} else if len(left) > 0 {
result = append(result, left[0])
left = left[1:len(left)]
} else if len(right) > 0 {
result = append(result, right[0])
right = right[1:len(right)]
}
}
我的问题是:这些多个len()调用是否会对算法的性能产生负面影响?为right
和left
切片的长度设置一个临时变量是否更好?还是编译器自己做的?