Algorismes de cerca lineal i binària explicats

Algorismes de cerca lineal i binària explicats

La possibilitat de buscar algunes dades és un aspecte important de la informàtica. Els algoritmes de cerca s’utilitzen per buscar un element concret en un conjunt de dades.





Els algoritmes retornen un resultat booleà (vertader o fals) a una consulta de cerca. També es poden modificar per donar la posició relativa del valor trobat.





Per a aquest article, els algorismes es concentraran a determinar si existeix un valor.





Algorismes de cerca lineal

La cerca lineal també es coneix com a cerca seqüencial. En aquest tipus de cerca, cada valor d'una llista es visita un per un de manera ordenada mentre es comprova si existeix el valor desitjat.

L'algoritme comprova el valor per valor fins que troba el valor que busqueu o es queden sense valors per cercar. Quan es queden valors per cercar, vol dir que la vostra consulta de cerca no existeix a la llista.



Un algorisme de cerca seqüencial inclou una llista de valors i l'element desitjat a la llista com a paràmetres. El resultat de retorn s’inicialitza com a Fals i canviarà a És cert quan es troba el valor desitjat.

Vegeu la implementació de Python a continuació com a exemple:





def linearSearch(mylist, item):
found = False
index = 0
while index if mylist[index] == item:
found = True
else:
index = index+1
return found

Anàlisi d'algorismes

El millor dels casos es produeix quan l'element desitjat és el primer de la llista. El pitjor dels casos es produeix quan l'element desitjat és l'últim de la llista (el novè element). Per tant, la complexitat temporal per a la cerca lineal és O (n).

L’escenari mitjà de casos de l’algorisme anterior és n / 2.





Relacionat: Què és la notació Big-O?

És important saber que l'algorisme utilitzat suposa que se li proporciona una llista aleatòria d'elements. És a dir, els elements de la llista no tenen un ordre concret.

protector de pantalla de privadesa de l'iPhone 11 pro

Suposem que els articles estaven en un ordre concret, per exemple, del més petit al més gran. Seria possible obtenir algun avantatge en càlcul.

Agafeu un exemple de cercar 19 a la llista donada: [2, 5, 6, 11, 15, 18, 23, 27, 34]. Després d’arribar als 23 anys, quedaria clar que l’element que es buscava no existeix a la llista. Per tant, ja no seria important continuar buscant la resta d'elements de la llista.

Algorismes de cerca binària

Heu vist com una llista ordenada pot reduir el càlcul necessari. L’algorisme de cerca binària aprofita encara més aquesta eficiència que presenta una llista ordenada.

L’algorisme comença agafant un valor mitjà d’una llista ordenada i comprovant si és el valor desitjat. Si no és així, es comprova si el valor és inferior o superior al valor desitjat.

Si és menor, no cal que comproveu la meitat inferior de la llista. En cas contrari, si és més gran, passa a la meitat superior de la llista.

Relacionat: Què és la recursivitat i com s’utilitza?

Independentment de la subllista (esquerra o dreta) escollida, es determinarà de nou el valor mitjà. El valor es torna a comprovar si és el valor requerit. Si no és així, es comprova si és inferior o superior al valor sol·licitat.

com instal·lar Windows a USB

Aquest procés es repeteix fins que es troba un valor si hi és.

La implementació de Python següent és per a l'algorisme de cerca binària.

binarySearch def (llista, element):

low = 0
high = len(mylist) - 1
found = False
while low <= high and not found: mid = (low + high) // 2
if mylist[mid] == item:found = True
elif item else:low = mid + 1
return found

Anàlisi d'algorismes

El millor dels casos es produeix quan es troba que l’element desitjat és l’element central. El pitjor dels casos no és tan senzill. Seguiu l'anàlisi següent:

Després de la primera comparació, quedaran n / 2 elements. Després del segon, quedaran n / 4 elements. Després del tercer, n / 8.

Fixeu-vos que el nombre d’elements es redueix a la meitat fins a arribar a n / 2i on i és el nombre de comparacions. Després de tota la divisió, acabem amb només 1 element.

Això implica:

n / 2i = 1 Per tant, la cerca binària és O (log n).

Passant a l’ordenació

En la cerca binària, vam considerar un cas en què la matriu donada ja estava ordenada. Però suposem que teniu un conjunt de dades sense ordenar i que volíeu fer una cerca binària. Què faries?

La resposta és senzilla: ordeneu-la. Hi ha diverses tècniques d’ordenació en informàtica que han estat ben investigades. Una d'aquestes tècniques que podeu començar a estudiar és l'algorisme de classificació de selecció, mentre que també tenim moltes guies relacionades amb altres àrees.

Compartir Compartir Tweet Correu electrònic Com s'utilitza l'ordenació de selecció

El tipus de selecció és una mica complicat d’entendre per als principiants, però no és massa difícil un cop obtingueu el swing de les coses.

Llegiu a continuació
Temes relacionats
  • Programació
  • Tecnologia explicada
  • Programació
  • Algorismes
  • Anàlisi de dades
Sobre l'autor Jerome Davidson(22 articles publicats)

Jerome és escriptor de personal de MakeUseOf. Cobreix articles sobre programació i Linux. També és un entusiasta de la criptografia i manté sempre al dia la indústria de la criptografia.

Més de Jerome Davidson

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us