二分查找的简单实现.

来源:互联网 发布:切糕事件知乎 编辑:程序博客网 时间:2024/05/16 05:29
数组必须有序且为线性结构.
int findNum(int a[],int first,int last,int target){    if(first>=last)        return -1;    int mid = (last-first)/2+first;    if(a[mid] == target)        return mid;    else{        if(a[mid]>target)            return findNum(a, first, mid-1, target);        else            return findNum(a, mid+1, last, target);    }}
<p class="p1"><span class="s1">int</span><span class="s2"> pos = </span><span class="s3">findNum</span><span class="s2">(a, </span><span class="s4">0</span><span class="s2">, </span><span class="s4">10</span><span class="s2">, </span><span class="s4">0</span><span class="s2">);</span></p><p class="p1"><span class="s2">    </span><span class="s1">if</span><span class="s2">(pos ==-</span><span class="s4">1</span><span class="s2">)</span></p><p class="p1"><span class="s2">        </span><span class="s5">printf</span><span class="s2">(</span><span class="s6">"</span><span class="s7">没找到</span><span class="s6">\n"</span><span class="s2">);</span></p><p class="p1"><span class="s2">    </span><span class="s1">else</span></p><p class="p1"><span class="s2">        </span><span class="s5">cout</span><span class="s2"><<a[pos]<<</span><span class="s5">endl</span><span class="s2">;</span></p>

0 0
原创粉丝点击