C ++ binært søk

C ++ binært søk
C ++ kommer med mange søkemetoder for å søke i en bestemt variabel fra matrisen eller en annen datastruktur. Blant alle av dem er binær søk ganske kjent for sin raske respons. En matrise vil bli konvertert i halvparten av det binære søket mens den allerede er sortert. Sammenligningen vil bli gjort av et midtpunkt av en matrise. Denne midtpunktverdien vil fortelle oss å søke på den nødvendige verdien i venstre halvdel av en matrise eller høyre halvdel. Halvparten av tiden for søk vil bli lagret når du jobber med den binære søkemetoden sammenlignet med andre søkemetoder. Innenfor denne enkle artikkelen vil vi således diskutere noen eksempler for å illustrere arbeidet med binær søk ved bruk av iterative og rekursive søkemetoder.

Etter å ha åpnet terminalskallet raskt, må du trenge en C ++ -fil for å opprette din binære søkekode i den. Derfor en enkel ett-ord nøkkelordkommando, i.e., "Touch," vil bli brukt av denne grunn. Så vi har brukt den til å lage en C ++ -fil som heter “Binary.CC ”og åpner den via den innebygde GNU Nano Editor som kommer med konfigurasjonen av Ubuntu 20.04 System. Begge kommandoene er allerede demonstrert ved hjelp av bildet nedenfor.

Eksempel 01: Iterativ metode

Den aller første metoden vi har brukt her er den iterative metoden for binær søk. Det ville være ganske enkelt å gjøre. Etter at filen er åpnet i Nano -redigereren, har vi lagt til overskriftsfilene som trengs for at koden skal kjøres. Navnområdet som må være standard er nødvendig for C ++ -kode her. En brukerdefinert funksjon som heter “Search” er opprettet for å utføre et binært søk. Denne brukerdefinerte funksjonen tar 4 argumenter i sine parametere, i.e., “A []” for matrise, til venstre for matriser venstre mest verdi, til høyre for matriser rett mest verdi, og v for verdi som skal søkes i matrisen “A”.

I løpet av denne funksjonen har vi brukt en enkel "mens" -løkke for å sjekke om den venstre eller første verdien av matrisen er mindre enn eller lik den høyre verdien (angitt til slutt) av matrisen eller ikke. Hvis verdien er mindre enn eller lik riktig verdi, vil den skape et nytt punkt i matrisen, i.e., Midt. Dette midtpunktet er beregnet ved å bruke både venstre og høyre. Etter at midtpunktet er funnet, bruker vi "hvis" -uttalelsen for å sjekke om verdien i midten av indeksen til en matrise "a" er den samme som verdien som blir bedt om å bli sjekket, i.e., “V”. Hvis tilstanden ble effektiv og verdien “V” matchet med midt-indeksverdien, vil den returnere midtindeksen til en matrise. I starten har matrisen vår to halvdeler, venstre og høyre. Den venstre inneholder mindre verdier, mens den høyre inneholder de større verdiene sammenlignet med midt-indeksverdien. Når verdien på et midtpunkt er mindre enn verdien som skal søkes, trenger vi ikke å vurdere venstre halvdel av en matrise fordi det vil inneholde mindre verdier.

Så vi vil oppdatere venstre variabel med indeksen "Mid+1". På den annen side, hvis midtverdien er større enn verdien som blir bedt om å bli sjekket, må vi ignorere høyre halvdel (større verdier) av en matrise. Så riktig variabel vil bli oppdatert av en ny verdi, i.e., “Midt-1”. Denne prosessen vil fortsette å gjøre til venstre for en matrise er lik eller mindre enn det rette punktet i en matrise. Hvis ikke -forholdene er oppfylt, har vi ikke funnet verdien i matrisen og returnerer -1 som en indeks til hovedmetoden.

Kom nå til Main () -funksjonsimplementeringen. Innenfor denne funksjonen har vi erklært en matrise som heter “A” med noen heltallverdier i den. Matrisen er allerede sortert i stigende rekkefølge. Da har en variabel “V” blitt initialisert der en verdi som er lagt inn av en bruker, vil bli lagret. COUT -setningen ber en bruker om å oppgi noe nummer mens CIN -setningen brukes til å samle inn brukerinngangen og lagre den i variabelen “V”.

En annen variabel, “N” er definert for å få den totale størrelsen på en matrise med størrelse av () funksjonsbruk på matrisen “A”. En annen variabel, "val" har blitt brukt for å få indeksen fra søkemetoden som en returverdi ved å kalle den. Funksjonsanropet passerer matrisen A, venstre punkt som 0, høyre punkt som heltall “N-1”, og verdien “V” som skal søkes. Hvis søkemetoden returnerer “-1” til variabel “val”, vil den første cout-uttalelsen bli utført; Ellers vil den andre bli utført og vise indeksen for en verdi matchet.

Dermed krever koden samlingen først. Etter den første og andre utførelsen kom brukeren inn på henholdsvis 14 og 19, og den ble matchet med henholdsvis indeks 3 og 8. Ved den tredje utførelsen fungerte det ikke som vist. Så G ++ -kompilatoren er her for din hjelp.

Eksempel 02: rekursiv metode

Dette handlet om den iterative metoden for binær søk i C++. La oss ha en ny metode for å gjøre et binært søk i C ++, en kjent og rekursiv metode. Den rekursive metoden vil være den samme som den iterative metoden, men kaller den binære søkemetoden rekursivt. Vi vil forklare det med koden. Så åpne den samme filen og oppdater søkemetoden. Vi har brukt det samme mens du løkker innenfor søkemetoden med de samme forholdene i den, jeg.e., if-ests-uttalelser, enkelt hvis uttalelse og midtpunktberegning.

Den eneste endringen er utført i IF-Else-setningen om søkefunksjonen. Når midtpunktsverdien er større enn verdien som skal søkes i søkemetoden, og tilstanden er fornøyd, vil den kalle den samme søkemetoden med liten endring i parametrene. Alle parametrene vil være de samme bortsett fra "riktig" punktverdi, som nå er "Mid-1" -indeksen. På den annen side, når en midtpunktsverdi er mindre enn verdien som skal søkes, i.e., “V” og tilstanden er ikke fornøyd, den vil kalle den samme funksjonen med en liten endring i parameterargumentet “Venstre”. Venstre punkt vil bli oppdatert med indeksen for “Mid+1” nå.

Du kan se hovedfunksjonen () er 100% den samme som ovennevnte iterative eksempel, og den har ikke en eneste karakterendring i den.

Først må du kompilere denne oppdaterte rekursive koden med G ++ og deretter utføre den. Etter den første utførelsen returnerer den 3 som et resultat til verdi 14, mens det ikke er funnet noen indeks så langt for verdi 24 etter den andre utførelsen.

Konklusjon:

Hele artikkelen ovenfor handler om binær søk i C++. Det binære søket er blitt oppdaget og forklart godt med to forskjellige metoder, i.e., iterativ og rekursiv. Alle eksemplene som er implementert og demonstrert er ganske enkle å gjøre og lett å forstå, ettersom hvert trinn er blitt forklart ganske kort. Derfor får vi store forhåpninger om at denne artikkelen vil være like gunstig for en naiv, ny og ekspertbruker.