Recomandat, 2024

Alegerea Editorului

Diferența dintre căutarea liniară și căutarea binară

Căutarea liniară și căutare binară sunt cele două metode care sunt utilizate în matrice pentru căutarea elementelor. Căutarea este un proces de găsire a unui element în lista elementelor stocate în orice ordine sau aleatoriu.

Diferența majoră între căutarea liniară și căutarea binară este că căutarea binară durează mai puțin timp pentru a căuta un element din lista de elemente sortată. Deci se deduce că eficiența metodei de căutare binară este mai mare decât căutarea liniară.

O altă diferență între cele două este că există o condiție prealabilă pentru căutarea binară, adică elementele trebuie sortate în timp ce în căutarea liniară nu există o astfel de condiție prealabilă. Deși ambele metode de căutare utilizează tehnici diferite care sunt discutate mai jos.

Diagramă de comparație

Bazele de comparațieCăutarea liniarăCăutare binară
Complexitatea timpuluiPE)O (log 2N)
Cel mai bun cazPrimul element O (1)Elementul central O (1)
Condiție prealabilă pentru o matriceNu este necesarArramentul trebuie să fie în ordine ordonată
Cel mai rău caz pentru numărul de elemente NSunt necesare comparații NSe poate concluziona după numai 2 N comparații log
Poate fi implementat peArray și lista conectatăNu pot fi implementate direct pe lista conectată
Introduceți operațiaIntroduceți ușor la sfârșitul listeiSolicitați procesarea pentru a insera la locul potrivit pentru a păstra o listă sortată.
Tipul algoritmuluiIterativ în naturăÎmpărțirea și cucerirea în natură
UtilitateUșor de folosit și nu necesită elemente comandate.Oricum, algoritmul și elementele dificile ar trebui organizate în ordine.
Linii de codMai puținMai Mult

Definiția Căutării liniare

Într-o căutare liniară, fiecare element al unei matrice este preluat unul câte unul într-o ordine logică și verificat dacă este sau nu elementul dorit. O căutare va fi nereușită dacă toate elementele sunt accesate și elementul dorit nu este găsit. În cel mai rău caz, numărul unui caz mediu ar trebui să scanăm jumătate din dimensiunea matricei (n / 2).

Ca urmare, căutarea liniară poate fi definită ca tehnica care traversează array secvențial pentru a localiza elementul dat. Programul prezentat mai jos ilustrează căutarea unui element al matricei utilizând căutarea.

Eficiența căutării liniare

Consumul de timp sau numărul de comparații efectuate în căutarea unei înregistrări într-un tabel de căutare determină eficiența tehnicii. Dacă înregistrarea dorită este prezentă în prima poziție a tabelului de căutare, atunci se face doar o singură comparație. Atunci când înregistrarea dorită este ultima, atunci trebuie efectuate n comparații. Dacă înregistrarea trebuie să apară undeva în tabelul de căutare, în medie, numărul de comparații va fi (n + 1/2). Eficiența celui mai rău caz al acestei tehnici este O (n), care reprezintă ordinea execuției.

Program C pentru a căuta un element cu tehnică de căutare liniară.

 #include #include void principal () {int a [100], n, i, element, loc = -1; clrscr (); printf ("\ nIntroduceți numărul elementului:"); scanf ("% d", & n); printf ("Introduceți numerele: \ n"); pentru (i = 0; i <= n-1; i ++) {scanf ("% d", & a [i]); } printf ("\ nIntroduceți numărul care urmează să fie căutat:"); scanf ("% d", & element); pentru (i = 0; i = 0) {printf ("\ n% d se găsește în poziția% d:", element, loc + 1); } altceva {printf ("\ n Elementul nu există"); } getch (); } 

Definiția Binary Search

Căutarea binară este un algoritm extrem de eficient. Această tehnică de căutare consumă mai puțin timp în căutarea elementului dat în comparații posibile minime. Pentru a face căutarea binară, mai întâi trebuie să sortați elementele de matrice.

Logica din spatele acestei tehnici este dată mai jos:

  • Mai întâi, găsiți elementul intermediar al matricei.
  • Elementul de mijloc al matricei este comparat cu elementul care trebuie căutat.

Există trei cazuri care ar putea apărea:

  1. Dacă elementul este elementul necesar, atunci căutarea este reușită.
  2. Când elementul este mai mic decât elementul dorit, căutați doar prima jumătate a matricei.
  3. Dacă este mai mare decât elementul dorit, căutați în a doua jumătate a matricei.

Repetați aceiași pași până când un element este găsit sau epuizat în zona de căutare. În acest algoritm, de fiecare dată când zona de căutare este redusă. Prin urmare, numărul de comparații este cel mult log (N + 1). Ca rezultat, este un algoritm eficient în comparație cu căutarea liniară, dar matricea trebuie să fie sortată înainte de a efectua căutarea binară.

Programul C pentru a găsi un element cu tehnica de căutare binară.

 #include void principal () {int i, cer, sfârșit, mijloc, n, căutare, matrice [100]; printf ("Introduceți numărul elementului \ n"); scanf ( "% d", & n); printf ("Introduceți numerele% d \ n", n); pentru (i = 0; i <n; i ++) scanf ("% d", & array [i]); printf ("Introduceți numărul care urmează să fie căutat \ n"); scanf ("% d", & căutare); beg = 0; end = n - 1; mijloc = (cerșit + sfârșit) / 2; în timp ce (beg <= end) {if (array [middle] end) printf ("Căutarea este nereușită!% d nu este prezentă în listă. \ n", căutare); getch (); } 

Diferențe cheie între căutare liniară și căutare binară

  1. Căutarea liniară are un caracter iterativ și folosește abordarea secvențială. Pe de altă parte, aplicațiile binare de căutare împart și împart abordarea.
  2. Complexitatea timpului de căutare liniară este O (N) în timp ce căutarea binară are O (log 2 N).
  3. Cel mai bun caz în căutarea liniară este pentru primul element, adică, O (1). În schimb, în ​​căutarea binară, este pentru elementul intermediar, adică O (1).
  4. În căutarea liniară, cel mai rău caz pentru căutarea unui element este N numărul de comparație. În schimb, este log 2 N numărul de comparație pentru căutarea binară.
  5. Căutarea liniară poate fi implementată într-o matrice, precum și în lista asociată, în timp ce căutarea binară nu poate fi implementată direct pe lista conectată.
  6. După cum știm căutarea binară necesită matricea sortată care este motivul Este necesară procesarea pentru a insera la locul ei adecvat pentru a menține o listă sortată. Dimpotrivă, căutarea liniară nu necesită elemente sortate, astfel încât elementele să fie ușor inserate la sfârșitul listei.
  7. Căutarea liniară este ușor de folosit și nu este nevoie de elemente comandate. Pe de altă parte, algoritmul de căutare binar este totuși dificil, iar elementele sunt aranjate neapărat în ordine.

Concluzie

Atât algoritmii de căutare liniare cât și binare pot fi utile în funcție de aplicație. Atunci când o matrice este structura de date și elementele sunt aranjate în ordine ordonată, atunci căutarea binară este preferată pentru căutarea rapidă . Dacă lista legată este structura de date indiferent de modul în care sunt aranjate elementele, căutarea liniară este adoptată din cauza indisponibilității implementării directe a algoritmului de căutare binar.

Algoritmul de căutare binar tipic nu poate fi folosit pentru lista de linkuri deoarece lista legată este dinamic în natură și nu se știe unde este atribuit elementul intermediar. Prin urmare, există o cerință de a proiecta variația algoritmului de căutare binar care poate funcționa și pe lista legată, deoarece căutarea binară este mai rapidă decât executarea unei căutări liniare.

Top