introduction searching algorithms c
Panoramica degli algoritmi di ricerca in C ++.
Continuiamo a cercare qualcosa o l'altro nella nostra vita quotidiana. Proprio come la nostra vita quotidiana, come professionisti del software, abbiamo bisogno di cercare informazioni sul nostro computer. Il recupero delle informazioni dovrebbe essere effettuato rapidamente poiché non possiamo permetterci di sprecare molto del nostro tempo a cercare informazioni.
Quindi abbiamo bisogno di alcune tecniche di ricerca efficienti o algoritmi che possano cercare una data informazione in breve tempo e darla all'utente in modo che l'utente possa andare avanti con le altre attività.
=> Visita qui per l'elenco completo dei tutorial C ++.
Cosa imparerai:
Tecniche di ricerca
Abbiamo due principali tecniche di ricerca utilizzate principalmente per la ricerca di informazioni.
Questi includono:
- Ricerca lineare
- Ricerca binaria
In questo tutorial, esploreremo in dettaglio entrambe queste tecniche di ricerca.
Ricerca lineare
Questa è la tecnica di ricerca più semplice ed è anche più facile da implementare. In una ricerca lineare, la chiave da ricercare viene confrontata linearmente con ogni elemento della raccolta dati. Questa tecnica funziona efficacemente su strutture di dati lineari.
Consideriamo il seguente array.
Sopra è la matrice di sette elementi. Se vogliamo cercare chiave = 23, quindi a partire da 0thelemento, il valore della chiave verrà confrontato con ogni elemento. Una volta che l'elemento chiave corrisponde con l'elemento nell'array, verrà restituita quella particolare posizione. In questo caso location, verrà restituito 4 poiché il valore-chiave corrisponde al valore in quella posizione.
Abbiamo implementato una ricerca lineare utilizzando C ++ e il linguaggio Java di seguito.
Implementazione C ++
#include #include using namespace std; int main() { int myarray(10) = {21,43,23,54,75,13,5,8,25,10}; int key,loc; cout<<'The input array is'<key; for (int i = 0; i<10; i++) { if(myarray(i) == key) { loc = i+1; break; } else loc = 0; } if(loc != 0) { cout<<'Key found at position '< Produzione:
come aprire un file .dat su Windows
L'array di input è
21 43 23 54 75 13 5 8 25 10
Immettere la chiave da cercare: 3
Impossibile trovare la chiave specificata nell'array
L'array di input è
21 43 23 54 75 13 5 8 25 10
Immettere la chiave da cercare: 75
Chiave trovata nella posizione 5 dell'array
Implementazione Java
import java.util.*; import java.lang.*; import java.io.*; public class Main { public static void main(String() args) { int() myarray = {21,43,23,54,75,13,5,8,25,10}; int key,location=0; Scanner sc = new Scanner(System.in); System.out.println('The input array is'); for(int i=0;i<10;i++){ System.out.print(myarray(i)+' '); } System.out.println('
'); System.out.println('Enter key'); key = sc.nextInt(); for(int i = 0; i<10; i++) { if(myarray(i)==key) { location = i+1; break; } else location = 0; } if(location != 0) { System.out.println('key found at location ' + location); } else System.out.println('Key not found'); } }
Produzione:
L'array di input è
che cos'è un tipo di file bin
21 43 23 54 75 13 5 8 25 10
Tasto Invio
2. 3
chiave trovata nella posizione 3
La ricerca lineare può essere eseguita su qualsiasi struttura dati lineare con elementi ordinati o non ordinati. Ma ci vuole più tempo se ci sono troppi elementi e se l'elemento chiave è verso la fine poiché ogni elemento viene confrontato con il valore chiave.
Ricerca binaria
La ricerca binaria è una tecnica che utilizza la tecnica 'divide et impera' per cercare una chiave. Funziona su un elenco lineare ordinato di elementi. L'elenco ordinato è il requisito di base per il funzionamento di una ricerca binaria.
Nel metodo di ricerca binaria, l'elenco viene ripetutamente diviso a metà e l'elemento chiave viene cercato in entrambe le metà dell'elenco finché non viene trovata la chiave.
Per esempio,prendiamo il seguente array ordinato di 10 elementi.

Diciamo che la chiave = 21 deve essere cercata nell'array.
Calcoliamo la posizione centrale dell'array.
Medio = 0 + 9/2 = 4
Per esempio,prendiamo il seguente array ordinato di 10 elementi.

Chiave = 21
Innanzitutto, confronteremo il valore della chiave con l'elemento (mid). Troviamo che il valore dell'elemento a metà = 21.

Quindi troviamo quella chiave = (metà). Quindi la chiave è trovata.
chiave = 25

Per prima cosa confrontiamo il valore della chiave con metà. Quindi (21<25), we will directly search for the key in the upper half of the array.

Ora troveremo di nuovo la metà per la metà superiore della matrice.
Medio = 4 + 9/2 = 6
Il valore nella posizione (metà) = 25

Ora confrontiamo l'elemento chiave con l'elemento medio. Quindi (25 == 25), quindi abbiamo trovato la chiave nella posizione (metà).
Dividiamo ripetutamente l'array e confrontando l'elemento chiave con il mid, decidiamo in quale metà cercare la chiave.
Di seguito sono riportate l'implementazione C ++ e Java per la ricerca binaria.
Implementazione C ++
#include #include using namespace std; int binarySearch(int myarray(), int beg, int end, int key) { int mid; if(end >= beg) { mid = (beg + end)/2; if(myarray(mid) == key) { return mid+1; } else if(myarray(mid) key; location = binarySearch(myarray, 0, 9, key); if(location != -1) { cout<<'Key found at location '< Produzione:
L'array di input è
5 8 10 13 21 23 25 43 54 75
Immettere la chiave da ricercare: 21
Chiave trovata nella posizione 5

Implementazione Java
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main(String() args) { int() myarray = {5,8,10,13,21,23,25,43,54,75}; int key, location = -1; System.out.println('The input array is'); for(int i=0;i= beg) { mid = (beg + end)/2; if(myarray(mid) == key) { return mid+1; } else if(myarray(mid) Produzione:
L'array di input è
5 8 10 13 21 23 25 43 54 75
Immettere la chiave da cercare
ventuno
la posizione della chiave è 5
La ricerca binaria è più efficiente in termini di tempo e correttezza. La tecnica di ricerca lineare è usata raramente poiché è più macchinosa e più lenta. La ricerca binaria è molto più veloce rispetto a una ricerca lineare.
Conclusione
Le tecniche di ricerca ci aiutano a cercare le informazioni memorizzate su un computer in modo che l'utente possa procedere con le altre attività di elaborazione delle informazioni. La tecnica di ricerca lineare è semplice e facile ma non è ampiamente utilizzata.
La tecnica di ricerca binaria è molto più veloce ed efficiente, quindi viene ampiamente utilizzata.
le 5 migliori app spia per Android
Nel nostro prossimo tutorial, esploreremo in dettaglio le varie tecniche di ordinamento.
=> Dai un'occhiata alla guida di formazione Perfect C ++ qui.
Lettura consigliata
- Introduzione al linguaggio di programmazione Java - Tutorial video
- Introduzione ad Appium Studio: vantaggi e caratteristiche principali
- Algoritmi in STL
- La migliore serie di tutorial GRATUITI per C #: la guida definitiva a C # per principianti
- JMeter Video 1: Introduzione, download e installazione di JMeter
- Introduzione a Python e processo di installazione
- Cos'è Unix: una breve introduzione a Unix
- Introduzione a Micro Focus LoadRunner - Test di carico con LoadRunner Tutorial n. 1