Den binære søkealgoritmen er en mer effektiv måte å søke etter et spesifikt element i en sortert liste. I motsetning til lineært søk, som sjekker elementer sekvensielt, deler binært søk listen i halvdeler og sammenligner målelementet med midtelementet. Denne prosessen gjentas til målelementet er funnet eller søkeområdet blir tomt.
Hvordan det fungerer
- Start med hele den sorterte listen.
- Finn midtelementet i gjeldende søkeområde.
- Sammenlign det midterste elementet med målverdien.
- Hvis det midterste elementet er lik målverdien, er søket vellykket.
- Hvis det midterste elementet er større enn målet, søk i venstre halvdel av området.
- Hvis det midterste elementet er mindre enn målet, søk i høyre halvdel av området.
- Gjenta trinn 2-6 til målelementet er funnet eller søkeområdet blir tomt.
Eksempel
La oss vurdere en sortert liste over heltall og ønsker å finne tallet 34 ved hjelp av binært søk.
Sortert liste: {12, 23, 34, 45, 56, 67, 89, 90}
- Start med hele listen.
- Mellomelement: 56(posisjon 4). Sammenlign med 34.
- 56 er større enn 34. Søk i venstre halvdel.
- Nytt midtelement: 23(posisjon 1). Sammenlign med 34.
- 23 er mindre enn 34. Søk i høyre halvdel.
- Nytt midtelement: 45(posisjon 3). Sammenlign med 34.
- 45 er større enn 34. Søk i venstre halvdel.
- Nytt midtelement: 34(posisjon 2). Mål funnet.
Eksempelkode i C++
I det gitte eksemplet binarySearch
brukes funksjonen til å finne tallet 34 i en sortert liste over heltall. Resultatet vil være posisjonen 34 i listen(posisjonene starter fra 0) eller -1 hvis tallet ikke finnes.