1.
int binary_search(int arr[],int k)
{
int left = 0;
int right=sizeof(arr) / sizeof(arr[0])-1;
int mid = (left + right)/2;
while (right>=left)
{
if (k > arr[mid])
{
left = mid + 1;
}
else if (k == arr[mid])
return mid;
else if (k < mid)
{
right = mid - 1;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9 };
int k=4;
int ret = binary_search(arr, k);
if (ret == -1)
printf("找不到");
else
printf("找到了,下标是%d",ret);
return 0;
}
不能实现的原因:arr传过去的是第一个元素的地址,所以形参arr是一个指针,而指针大小为四字节
改进:在内部算数组的长度,再传给函数
int binary_search(int arr[],int k,int sz)
{
int left = 0;
int right=sz-1;
//int mid = (left + right)/2;
while (right>=left)
{
int mid = (left + right) / 2;
if (k > arr[mid])
{
left = mid + 1;
}
else if (k == arr[mid])
{
return mid;
}
else if (k < arr[mid])
{
right = mid - 1;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9 };
int k=0;
scanf("%d", &k);
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr, k,sz);
if (ret == -1)
printf("找不到");
else
printf("找到了,下标是%d",ret);
return 0;
}
2.除法复制:
符号:/=
例:
int x=2;
x/=2;
printf("%d",x);输出为1
3.解引用操作符:
含义,例:
int a=1;
int* pa=a;
*pa=20;//*pa即通过pa里的地址,找到a的内容;把a改为20
4.一个话术\接受\结论:
形参只是实参的一份临时拷贝,形参和实参之间没有实际联系,对形参的改变不会引起实参的改变,所以不会达到...的效果
5.
sqrt(n)用来算n的平方根,要引用math.h