您的位置:首页 > 博客中心 > 数据库 >

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




    热门排行

    今日推荐

    热门手游