int binary_search(int* arr,int num,int k)
{
int left = 0;
int right = k - 1;
int mid;
while (left <= right)
{
mid = (left + right) / 2;
if (arr[mid] < num)
{
left = mid + 1;
}
else if (arr[mid] > num)
{
right = mid - 1;
}
else if (arr[mid] == num)
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8 };
int x, num = 5, y;
y = sizeof(arr) / sizeof(arr[0]);
x = binary_search(arr, num, y);
printf("%d", x);
}
这是一个二分查找程序,遇到了一些问题但也解决了。
首先是这段代码,他不能写在子程序中用于计算数组的长度,因为int binary_search(int* arr,int num,int k)中数组传给形参的是数组的首指针地址,并不是整个数组。
y = sizeof(arr) / sizeof(arr[0]);
素数的判断
int is_prime(int x)//素数的判断
{
int j;
for (j = 2; j < x; j++)
{
if (x % j =