int caut(int v[], int inf, int sup, int x)
{
int mij;
if (inf > sup)
return 0;
else {
mij = (inf + sup) / 2;
if (x == v[mij])
return 1;
else if (x < v[mij])
return caut(v, inf, mij - 1, x);
else
return caut(v, mij + 1, sup, x);
}
}
Probleme:
2. Rescrieţi funcţia ''caut'' în variantă nerecursivă (iterativă) pentru codul prezentat anterior al căutării binare şi pentru tema de mai sus.
3. Să se determine dacă un element citit pe intrare se găseşte într-o matrice de numere reale ale cărei elemente, citite pe intrare, sunt ordonate crescător de la primul la ultimul element plecând din colţul din stânga sus al matricii, pe linii de la prima la ultima, către colţul din dreapta jos al matricii.
4. Să se determine dacă un element citit pe intrare se găseşte într-o matrice de numere reale ale cărei elemente, citite pe intrare, sunt ordonate descrescător de la primul la ultimul element plecând din colţul din stânga sus al matricii, pe linii de la prima la ultima, către colţul din dreapta jos al matricii.
stefandec08c:
https://imgur.com/a/cDNSnqo - am pus si o poza in caz ca va ajuta
Răspunsuri la întrebare
Răspuns de
0
Răspuns:
#include<stdio.h>
int caut(int n, int v[NMAX], int x) {
int low = 0, high = n - 1;
while (low <= high) {
int mj = low + (high - low) / 2;
if (v[mij] == x) {
return mij;
}
if (v[mij] < x) {
low = mij + 1;
} else {
high = mij - 1;
}
}
return -1;
int main () {
}
Explicație:
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Fizică,
9 ani în urmă