Recherche de tableau
recherche linéaire
Recherchez les données dans le tableau et trouvez où elles se trouvent (faites simplement correspondre les premières données du tableau)
#include <stdio.h>
int search(int key,int a[],int len) {
int ret = -1;
for (int i = 0; i < len; i++)
{
if (key ==a[i]) {
ret = i;
break;
}
}
return ret;
}
int main()
{
int a[] = {
1,2,3,5,6,3,19 };
int r = search(3, a,sizeof(a)/sizeof(a[0]));
printf("%d",r);
return 0;
}
recherche binaire
L'exigence doit être un tableau ordonné. Ici, nous prenons le tableau a[] = {1,2,3,5,6,7,19,37,89,101,111,119} comme exemple.
Recherchez l'indice où se trouve 37
#include <stdio.h>
int search(int key, int a[], int len) {
int ret = -1;
int left = 0;
int right = len - 1;
while (left<=right)
{
int mid = (left + right) / 2;
if (a[mid] == key) {
ret = mid;
break;
}
else if (a[mid]<key)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return ret;
}
int main()
{
int a[] = {
1,2,3,5,6,7,19,37,89,101,111,119 };
int r = search(37, a, sizeof(a) / sizeof(a[0]));
printf("%d", r);
return 0;
}