查找算法之顺序查找
int order_find(int* arr,size_t len,int key)
{
if(len == 0)
return -1;
for(int i = 0;i < len;i++)
{
if(arr[i] == key)
return i;
}
return -1;
}
顺序查找是最简单的一种查找算法,简单来说就是通过遍历来找到相同的值,就不多说了
查找算法之二分查找
根据循环得到的二分查找
int Binary search(int* arr,size_t len,int key)
{
int left = 0,right = len-1;
while(left <= right)
{
int mid = (left+right)/2;
if(mid>key)
{
right = mid-1;
}else if(mid < key)
{
left = mid+1;
}else
{
return mid;
}
}
return -1;
}
根据递归得到的二分查找
int _Binary_search(int* arr,int left,int right,int key)
{
int mid = (left+right)/2;
if(mid > key)
{
return _Binary_search(arr,left,mid-1,key);
}else if(mid < key)
{
return _Binary_search(arr,mid+1,right,key);
}else
{
return mid;
}
}
int Binary_search(int* arr,size_t len,int key)
{
return _Binary_search(arr,0,len-1,key);
}
二分查找就是通过折半的原理来进行查找这里提供了两个版本的写法,二分查找的前提是数组是有序的(如升序或者降序);