👣 Какая сложность у следующего

алгоритма?



func reverse(n []int) {

length := len(n)



for i := 0; i < length / 2; i++ {

other := length - i - 1

temp := n[i]



n[i] = n[other]

n[other] = temp

}

}



func reverse(n []int) {

for n / 2 раз

}




Думаете O(log n)? Казалось бы да, но нет.



Ответ: O(n/2), т.к. мы просто один раз берем половину элементов массива и итерируем их, скажем было 100 элементов взяли половину - 50, для Big O это все те же n элементов, следовательно сложность алгоритма O(n)




@golang_interview