zoukankan      html  css  js  c++  java
  • 有序表的折半查找

    非递归实现

    代码
    #include <stdio.h>
    int search(int num[],int n,int key)
    {
        
    int low=0;
        
    int high =n-1;
        
    int mid=0;
        
    while(low<=high)
        {
            mid 
    = (low+high)/2;
            
    if(num[mid]==key)return mid;
            
    else if(num[mid]<key)
            {
                low
    =mid+1;
            }
            
    else 
            {
                high 
    = mid-1;
            }
        }
        
    return -1;
    }
    int main()
    {
            
    int a;
            scanf(
    "%d",a);
        
    int num[10]={0,1,2,3,4,5,6,7,8,9};
        printf(
    "%d\n",search(num,10,a));
        
    return 0;
    }

     递归实现

    代码
    #include <stdio.h>
    int search(int num[],int low,int high,int key)
    {
        
    if(low==high&&num[low]!=key)
        {
            
    return -1;
        }
        
    int mid=0;
        mid 
    = (low+high)/2;
        
    if(num[mid]==key)
        {
            
    return mid;
        }
        
    else if(num[mid]<key)
        {
            low 
    =mid+1;
        }
        
    else
        {
            high 
    =mid-1;
        }
        search(num,low,high,key);
    }
    int main()
    {
        
    int num[10]={0,1,2,3,4,5,6,7,8,9};
        printf(
    "%d\n",search(num,0,9,0));

        
    return 0;
    }
  • 相关阅读:
    perimeter of squares
    map
    django路由
    for的骚用法
    3和5的倍数相加和
    PeteCake 字典和最小值
    Find the missing letter
    实现简单的ssh功能
    开源运维工具体系
    vsftp在iptables中的配置
  • 原文地址:https://www.cnblogs.com/ManMonth/p/1764634.html
Copyright © 2011-2022 走看看