Den binære søgealgoritme er en mere effektiv måde at søge efter et bestemt element i en sorteret liste. I modsætning til lineær søgning, som kontrollerer elementer sekventielt, deler binær søgning listen i halvdele og sammenligner målelementet med det midterste element. Denne proces gentages, indtil målelementet er fundet, eller søgeområdet bliver tomt.
Hvordan det virker
- Start med hele den sorterede liste.
- Find det midterste element i det aktuelle søgeområde.
- Sammenlign det midterste element med målværdien.
- Hvis det midterste element er lig med målværdien, er søgningen vellykket.
- Hvis det midterste element er større end målet, søg i venstre halvdel af området.
- Hvis det midterste element er mindre end målet, søg i højre halvdel af området.
- Gentag trin 2-6, indtil målelementet er fundet, eller søgeområdet bliver tomt.
Eksempel
Lad os overveje en sorteret liste over heltal og ønsker at finde tallet 34 ved hjælp af binær søgning.
Sorteret liste: {12, 23, 34, 45, 56, 67, 89, 90}
- Start med hele listen.
- Mellemelement: 56(position 4). Sammenlign med 34.
- 56 er større end 34. Søg i venstre halvdel.
- Nyt midterelement: 23(position 1). Sammenlign med 34.
- 23 er mindre end 34. Søg i højre halvdel.
- Nyt midterelement: 45(position 3). Sammenlign med 34.
- 45 er større end 34. Søg i venstre halvdel.
- Nyt midterelement: 34(position 2). Mål fundet.
Eksempelkode i C++
I det givne eksempel binarySearch
bruges funktionen til at finde tallet 34 i en sorteret liste over heltal. Resultatet vil være positionen 34 på listen(positionerne starter fra 0) eller -1, hvis tallet ikke findes.