9.10 二分查找 gcc makefile gdb调试
时间:2022-03-13 23:47
#include <stdio.h>
#include <stdlib.h>
int find1(int *a, int low , int high , int key)//迭代二分查找
{
int mid = 0;
while (low <= high)
{
mid = (low+high)/2;
if (a[mid] == key)
return mid;
else if (a[mid] < key)
low = mid + 1;
else
high = mid -1;
}
return -1;
}
int find2(int *a, int low , int high , int key) //递归二分查找
{
if (low > high)
return -1;
int mid = (low+high)/2;
if (a[mid] == key)
return mid;
else if (a[mid] < key)
find1(a,mid+1,high,key);
else
find1(a,low,mid-1,key);
}
int main()
{
int array[13] = {2,6,8,12,32,64,67,78,98,104,120,134,140};
int key = find2(array,0,12,140);
printf("%d\n",array[key]);
return 0;
}
在makefile使用自动变量和模式规则的例子并且可以编译多个源文件
.SUFFIXES:.c .oCC=gccSRCS=hello.c\ pub.c
OBJS=$(SRCS:.c=.o)EXEC=hello
start:$(OBJS) $(CC) -o $(EXEC) $(OBJS) @echo ‘---------------ok---------------‘
.c.o: $(CC) -o $@ -c $<
clean: rm -f $(OBJS)
gdb调试一定要加上-g选项:
gdb 程序名 [corefile] corefile是可选的,但能增强gdb的调试能力。Linux默认是不生成corefile的,所以需要在用户profile文件中添加
vi .profileulimit -c unlimited. .profile
gdb app core