二分查找

mac2022-06-30  38

①关于clean

  装了Dev-c++,复制了一段代码,修改数据后发现运行结果不变,感到很困惑,查资料后解决办法是“运行-清除”,有一段是描述java的话是“eclipse中clean的作用:将工程中的.class文件删除,同时重新编译工程Java文件”。以后要养成习惯:修改数据后,clean一下。

②关于#include <iostream

  #include 是包含命令,就是把iostream这个文件里的内容复制到这个地方。input output stream,标准输入输出流。它包含:   (1)cin>>“要输入的内容”   (2)cout<<“要输出的内容”   这两个输入输出的方法需要#include来声明头文件。 (②③来源)

③关于using namespace std;

  c++标准程序库中的所有标识符都被定义于一个名为std的namespace中。

  ps:②没有“;”,而③却有“;”。

④关于代码

  下面是自己在理解的基础上手写的代码

#include<iostream> using namespace std; int BinarySearch(int A[],int left,int right,int x) { if(A==NULL) return -1;//这里忘记考虑A==null的情况; while(left<right){ int mid=(left+right)/2; if(x==A[mid]) return mid; else if(x<A[mid]) right=mid-1; else left=mid+1; } } int main() {int A[]={1,3,5,8,9,11,14,16,17,20,2228};//还不会随机生成数组; int left=0; int right=sizeof(A)/sizeof(A[0])-1;//sizeof不会用!没学过; int p=BinarySearch(A,left,right,28); cout<<p<<endl;//不记得printof怎么用! }

⑤关于sizeof (1、2)

  sizeof是一个操作符,其作用是返回一个对象或类型所占的内存字节数。   用法:sizeof(数组名)/sizeof(成员或成员变量的类型)可得数组元素的个数。

  int sizeof(A)/sizeof(A[0])-1;   第一个A不加[],加[]时,意思是传进去的是数组元素的内容;   不加[ ]时,这时参数相当于是传的一个指针,是数组的首地址。   所以sizeof(A)是数组A的大小,sizeof(A[0])是数组A中第0个元素的大小,属于A中每个元素的大小都是一样,因为每个元素类型一样。所以二者相除就是这个数组的长度,前面那个int就是将这个值的类型由sizeof强制转换为短整型int,以用于后续计算和输出。减一是因为数组是从0开始排序。

⑥关于cout,printf

  这是原始的:   这是第一次修改的:   我把cout<<p<<endl;直接改成printf(“p”);得到的结果是:p   随后查资料修改为:   得到的结果是:   与原来结果一致。

⑦printf的用法

  printf("%d ",a);   % 后面的d可以替换成下列字符:   d 以十进制形式输出带符号整数(正数不输出符号)   o 以八进制形式输出无符号整数(不输出前缀0)   x,X 以十六进制形式输出无符号整数(不输出前缀Ox)   u 以十进制形式输出无符号整数   f 以小数形式输出单、双精度实数   e, E 以指数形式输出单、双精度实数   g, G 以%f或%e中较短的输出宽度输出单、双精度实数   c 输出单个字符   s 输出字符串

最新回复(0)