二分查找之前先要排序,本例子中默认已经经过排序,程序如下:
#include <stdio.h>
int search(int * s,int n,int k)//n:数组元数个数,k:是要查找的参数。查找算法实现功能:查找到
{ //参数k所在数组中的位置
int low = 0,high = n,mid; //这三个值为下标
mid = (low + high)/2;
if(s[low] == k)
return low;
if(s[high] == k)
return high;
while(low<=high)
{
if(s[mid] > k)
{
high = mid-1;
mid = (low + high)/2;
}
else if(s[mid] < k)
{
low = mid+1;
mid = (low + high)/2;
}
else
return mid;
}
}
void main()
{
int num[]={0,1,5,13,24,35,46,57,68,79};
int m;
m=search(num,9,79);
printf("位置:%d,数值:%d\n",m,num[m]);
}