Ricerca binaria C ++

Ricerca binaria C ++
C ++ presenta molti metodi di ricerca per cercare una particolare variabile dall'array o da qualche altra struttura dei dati. Tra tutti loro, la ricerca binaria è abbastanza nota per la sua rapida risposta. Un array verrà convertito a metà all'interno della ricerca binaria mentre è già ordinato. Il confronto sarebbe fatto da un punto medio di un array. Questo valore medio ci direbbe di cercare il valore richiesto nella metà sinistra di un array o nella metà destra. La metà del tempo per la ricerca verrà salvata quando si lavora con il metodo di ricerca binaria rispetto ad altri metodi di ricerca. Pertanto, all'interno di questo semplice articolo, discuteremo alcuni esempi per illustrare il funzionamento della ricerca binaria usando metodi di ricerca iterativi e ricorsivi.

Dopo aver aperto rapidamente la shell del terminale, è necessario aver bisogno di un file C ++ per creare il codice di ricerca binario in esso. Pertanto, un semplice comando di parole chiave a una parola, i.e., "Touch", verrà utilizzato per questo motivo. Quindi, lo abbiamo usato per creare un file C ++ chiamato "Binario.CC ”e aprirlo tramite l'editor GNU Nano integrato che presenta la configurazione di Ubuntu 20.04 Sistema. Entrambi i comandi sono già stati dimostrati con l'aiuto dell'immagine qui sotto.

Esempio 01: metodo iterativo

Il primo metodo che abbiamo utilizzato qui è il metodo iterativo di ricerca binaria. Sarebbe abbastanza semplice da fare. Dopo che il file è stato aperto nell'editor Nano, abbiamo aggiunto i file di intestazione necessari per l'esecuzione del codice. Lo spazio dei nomi che deve essere standard è necessario per il codice C ++ qui. È stata creata una funzione definita dall'utente denominata "Search" per eseguire una ricerca binaria. Questa funzione definita dall'utente prende 4 argomenti nei suoi parametri, i.e., “A []” per l'array, a sinistra per gli array a sinistra, a destra per gli array a destra più valore e V per il valore da cercare nell'array “A".

All'inizio di questa funzione, abbiamo usato un semplice ciclo "mentre" per verificare se il valore più a sinistra o primo dell'array è inferiore o uguale al valore più destro (immesso alla fine) dell'array o no. Se il valore è inferiore o uguale al valore più a destra, creerà un nuovo punto nell'array, i.e., metà. Questo punto medio è stato calcolato usando sia a sinistra che a destra. Dopo che il punto medio è stato trovato, stiamo utilizzando l'istruzione "if" per verificare se il valore al medio indice di un array "A" è lo stesso del valore richiesto da controllare, i.e., "V". Se la condizione è diventata efficace e il valore "V" abbinata al valore medio-indice, restituirà l'indice medio di un array. All'inizio, il nostro array ha due metà, sinistra e destra. Quello a sinistra contiene valori più piccoli, mentre quello destro contiene i valori più grandi rispetto al valore medio-indice. Quando il valore a un punto medio è inferiore al valore da cercare, non è necessario considerare la metà sinistra di un array perché ciò conterrà valori più piccoli.

Quindi, aggiorneremo la nostra variabile sinistra con l'indice di "Mid+1". D'altra parte, se il valore centrale è maggiore del valore richiesto per essere controllato, dobbiamo ignorare la metà destra (valori più grandi) di un array. Quindi, la variabile giusta verrà aggiornata da un nuovo valore, io.e., "Mid-1". Questo processo continuerà a fare fino a quando la sinistra di un array è uguale o inferiore al punto destro di un array. Se non sono soddisfatte le condizioni, non abbiamo trovato il valore nell'array e restituendo -1 come indice al metodo principale.

Ora, è arrivato all'implementazione della funzione principale (). All'interno di questa funzione, abbiamo dichiarato un array chiamato "A" con alcuni valori interi in esso. L'array è già ordinato in ordine crescente. Quindi una variabile "V" è stata inizializzata in cui verrà salvato un valore immesso da un utente. L'istruzione Cout indica a un utente di inserire un certo numero mentre l'istruzione CIN viene utilizzata per raccogliere l'input dell'utente e salvarlo nella variabile "V".

Un'altra variabile, "N" è stata definita per ottenere la dimensione totale di un array con l'utilizzo della funzione sizeof () sull'array "A". Un'altra variabile, "Val" è stata utilizzata per ottenere l'indice dal metodo di ricerca come valore di ritorno chiamandolo. La chiamata di funzione passa l'array A, punto sinistro come 0, punto destro come intero "n-1" e il valore "v" da cercare. Se il metodo di ricerca restituisce "-1" a "Val" variabile, verrà eseguita la prima istruzione Cout; Altrimenti, il secondo verrà eseguito e visualizzerà l'indice di un valore abbinato.

Pertanto il codice richiede prima la compilation. Dopo la prima e la seconda esecuzione, l'utente ha inserito 14 e 19 e si è abbinato rispettivamente con l'indice 3 e 8, come visualizzato. Alla terza esecuzione, non ha funzionato come mostrato. Quindi, il compilatore G ++ è qui per il tuo aiuto.

Esempio 02: metodo ricorsivo

Questo riguardava il metodo iterativo di ricerca binaria in c++. Abbiamo un secondo metodo per effettuare una ricerca binaria in C ++, un metodo noto e ricorsivo. Il metodo ricorsivo sarebbe lo stesso del metodo iterativo, ma chiamiamo ricorsivamente il suo metodo di ricerca binaria. Lo spiegheremo con il codice. Quindi, apri lo stesso file e aggiorna il metodo di ricerca. Abbiamo usato lo stesso durante il loop all'interno del metodo di ricerca con le stesse condizioni in esso, i.e., istruzioni if-else, istruzione singola if e calcolo di medio punto.

L'unica modifica è stata eseguita nell'istruzione IF-Else della funzione di ricerca. Quando il valore medio è maggiore del valore da cercare nel metodo di ricerca e la condizione è soddisfatta, chiamerà lo stesso metodo di ricerca con poca modifica nei suoi parametri. Tutti i parametri saranno gli stessi tranne il valore del punto "giusto", che ora è l'indice "Mid-1". D'altra parte, quando un valore medio è inferiore al valore da cercare, io.e., "V" e la condizione non è soddisfatta, chiamerà la stessa funzione con un piccolo cambiamento nell'argomento dei parametri "Left". Il punto sinistro verrà aggiornato con l'indice di "Mid+1" ora.

Puoi vedere la funzione principale () è al 100% uguale all'esempio iterativo sopra e non ha un cambio di carattere singolo in essa.

Innanzitutto, compila questo codice ricorsivo aggiornato con G ++ e quindi eseguilo. Dopo la prima esecuzione, restituisce 3 come risultato al valore 14, mentre finora non è stato trovato alcun indice per il valore 24 dopo la seconda esecuzione.

Conclusione:

L'intero articolo di cui sopra riguarda la ricerca binaria in c++. La ricerca binaria è stata scoperta e spiegata bene con due metodi diversi, i.e., iterativo e ricorsivo. Tutti gli esempi implementati e dimostrati sono abbastanza semplici da fare e facilmente da capire, poiché ogni passo è stato spiegato abbastanza brevemente. Pertanto, stiamo ottenendo grandi speranze che questo articolo sia ugualmente vantaggioso per un utente ingenuo, nuovo ed esperto.