zoukankan      html  css  js  c++  java
  • 折半查找函数

    该函数用于判定已排序的数组v中是否存在某个特定的值x。数组v的元素必须以升序排列。如果v中包含x,则该函数返回x在v中的位置(介于0~n-1之间的一个整数);否则,该函数返回-1。

    /* binsearch:  find x in v[0] <= v[1] <= ... <= v[n-1] */ 
       int binsearch(int x, int v[], int n) 
       { 
           int low, high, mid; 
     
           low = 0; 
           high = n - 1; 
           while (low <= high) { 
               mid = (low+high)/2; 
               if (x < v[mid]) 
                   high = mid - 1; 
               else if (x  > v[mid]) 
                   low = mid + 1; 
               else    /* found match */ 
                   return mid; 
           } 
           return -1;   /* no match */ 
       }
    int binsearch(char *word, struct key tab[], int n) 
    { 
           int cond; 
           int low, high, mid; 
     
           low = 0; 
           high = n - 1; 
           while (low <= high) { 
               mid = (low+high) / 2; 
               if ((cond = strcmp(word, tab[mid].word)) < 0) 
                   high = mid - 1; 
               else if (cond > 0) 
                   low = mid + 1; 
               else 
                   return mid; 
           } 
           return -1; 
       }
    struct key *binsearch(char *word, struck key *tab, int n) 
       { 
           int cond; 
           struct key *low = &tab[0]; 
           struct key *high = &tab[n]; 
           struct key *mid; 
     
           while (low < high) { 
               mid = low + (high-low) / 2; 
               if ((cond = strcmp(word, mid->word)) < 0) 
                   high = mid; 
               else if (cond > 0) 
                   low = mid + 1; 
               else 
                   return mid; 
           } 
           return NULL; 
       }
  • 相关阅读:
    (转)三款Json查看小工具
    开源数据源
    关于异常
    java 线程池
    百度android面试及一些问题的讲解
    linux常用命令
    android activityManager
    Android ListView及其属性
    android listView与adapter
    android 反编译
  • 原文地址:https://www.cnblogs.com/zpehome/p/3227050.html
Copyright © 2011-2022 走看看