Array search
linear search
Search the data in the array and find where it is (just match the first data in the array)
#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;
}
binary search
The requirement must be an ordered array. Here we take the array a[] = {1,2,3,5,6,7,19,37,89,101,111,119} as an example.
Search for the subscript where 37 is located
#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;
}