Na implementação de
lookup
,1. mid = (low + high) / 2mas pensei que o correto seria
2. mid = (high - low) / 2
A sutileza está no fato de que em
2
calcula-se o deslocamento relativo à uma porção do array do elemento do meio mid
, enquanto em 1
calcula-se a sua posição absoluta.Se temos um array de 10 elementos com posições
[0..9]
e estamos a procurar na porção [5..9]
o deslocamento de mid
relativo à porção em questão émid = (9-5) / 2 = 2.Relativamente ao array todo,
mid
tem índicemid = (9+5) / 2 = 7.Claramente, 7 é o elemento 2 da porção
[5..9]
.A forma correta para 2 seria então
mid = mid + (high - low)/2De modo que a sugerida no livro é mais sucinta.
Nenhum comentário:
Postar um comentário