Documente Academic
Documente Profesional
Documente Cultură
Curs 4 Cautare
Curs 4 Cautare
Informatica Economica
Anul 2
FEAA
Cautare secventiala
Valoarea 35 se gaseste la pozitia 4
Tipuri de cautari
• Cautarea secventiala
• Cautarea in multimi ordonate
• Cautarea divide-et-impera (maniera
secventiala);
• Cautarea divide-et-impera (maniera
recursiva);
• Cautarea in arbori binari.
Cautarea in multimi ordonate
• Daca stim ca multimea este ordonata,
cautarea secventiala poate fi optimizata.
• in cazul valCautata=35, procesul de cautare merge pana la i=3 deoarece dupa acest
index, valoarea 35 sigur nu mai poate fi gasita.
•Nu uitati!!! Acest algoritm functioneaza DOAR DACA stim sigur ca multimea initiala
este sortata.
Tipuri de cautari
• Cautarea secventiala
• Cautarea in multimi ordonate
• Cautarea divide-et-impera (maniera
secventiala);
• Cautarea divide-et-impera (maniera
recursiva);
• Cautarea in arbori binari.
Cautarea Divide-et-Impera (secventiala)
• Daca valorile sunt egale, inseamna ca s-a gasit elementul cautat si se returneaza
indexul respectiv.
• In caz contrar, daca cheia de cautare este mai mica decat valoarea de la mijlocul
colectiei, algoritmul se repeta in sub-colectia din stanga mijlocului colectiei.
• Daca cheia de cautare este mai mare, algoritmul se repeta in sub-colectia din
dreapta mijlocului.
int start = 0;
int end = a.length - 1;
while (start <= end) {
int mijloc = (start + end) / 2;
if (cheie == a[mijloc]) {
return mijloc;
}
if (cheie < a[mijloc]) {
end = mijloc - 1;
} else {
start = mijloc + 1;
}
}
return -1;
}
Cautarea binara – apelare Java
Cautare binara
Valoarea 80 se gaseste la pozitia 7
Cautarea binara - remarci
• Complexitatea?
Tipuri de cautari
• Cautarea secventiala
• Cautarea in multimi ordonate
• Cautarea divide-et-impera (maniera
secventiala);
• Cautarea divide-et-impera (maniera
recursiva);
• Cautarea in arbori binari.
Cautarea binara recursiva - metodologie
• La fiecare etapa, algoritmul compara cheia de cautare cu valoarea din mijlocul colectiei.
• Daca valorile sunt egale, inseamna ca s-a gasit elementul cautat si se returneaza indexul
respectiv.
• In caz contrar, daca cheia de cautare este mai mica decat valoarea de la mijlocul colectiei,
algoritmul se re-apeleaza recursiv avand ca date de intrare sub-colectia din stanga
mijlocului colectiei.
• Daca cheia de cautare este mai mare, algoritmul se re-apeleaza recursiv cu sub-colectia din
dreapta mijlocului.
} else {
return mijloc;
}
}
//daca nu s-a gasit cheia de cautare, returnam index negativ
return -1;
}
Cautarea binara recursiva – apelare Java
if(k<(int)node.data)
return search(node.getLeft(), k);
else
return search(node.getRight(), k);
}
Cod complet – de implementat la laborator
public class CautariBinare {
if(k<(int)node.data)
return search(node.getLeft(), k);
else
return search(node.getRight(), k);
}
}