二分搜索

二分搜索

作者:LAMP小白  点击:1700  发布日期:2012-10-02 21:11:00  返回列表
原理就不说啦,最直观的例子就是哈佛公开课里面拿一本英语电话薄让学生找出一个人的例子...

写的时候出过几次死循环,pkill了几次 悲催吧 哈哈

提前给变量生成一个默认值也是个好习惯,不然i第一次是-1.....很多很多位

代码:

#include mio_lt;stdio.hmio_gt;
#include mio_lt;stdlib.hmio_gt;
    int main(void)
    {
        int arr[10] = {1,3,5,7,9,11,13,15,17,19};
        int target;
        int count;
        int i = 0;
        int start;
        int end;
        printf("nenter a number:");
        scanf("%d", mio_amp;target);
        count = sizeof(arr)/sizeof(int);
        start = 0;
        end = count - 1;
        if(target mio_lt; arr[start] || target mio_gt; arr[end]){
            printf("%d Out of range!!", target);
            abort();
        }
        while(arr[i] != target){
            printf("ni=%d,start=%d,end=%dn", i,start,end);
            printf("target=%d,arr s=%d,arr e=%dn", target,arr[start],arr[end]);
            i = ((end - start) / 2) + start;
            if(arr[i] == target) break;
            if(arr[i] mio_gt; target) end = i;
            if(arr[i] mio_lt; target) start = i;
            printf("ngo on...n");
            sleep(1);
        }
        printf("narr i=%d is %dn", i,target);
        return 0;
    }



上一篇:pgrep 下一篇:快递查询API
0