Två små frågor Binär + linjär sökning.

Permalänk
Medlem

Två små frågor Binär + linjär sökning.

Hej.

Undrade om jag nu har 64 element i min array och kör en binär sökning (vi antar att arrayen e sorterad) hur många jämförelser som max blir det?.

ska man räkna med att man börjar med 0-63 och sedan fortsätter dela med 2, dvs. 63, 31, 15, 7, 3, 1 = 5 jämförelser eller skall man börja med att dela med 64, 32, 16, 8 , 4, 2, 1 = 6 jämförelser.

Och hur skall man räkna linjär sökningen?.

mvh\

Permalänk
Datavetare

Om du gör binärsökning på N element så blir det upp till log^2(N) jämförelser. Så för 64 element blir det max 6 jämförelser.
Anta t.ex. att du söker efter 1 du kommer då titta på

32, 16, 8, 4, 2, 1

Gör du linjär sökning är det som värst N jämförelser och i genomsnitt blir det N/2 jämförelser.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Avstängd

2^6 = 64. Alltså kollar du 6 ggr.

Dvs, log2 (64) = 6. Precis det virtual_void skriver.