zoukankan      html  css  js  c++  java
  • 查找

    继续复习,先复习简单的顺序和二分查找

    函数原型

    //顺序查找
    int seqSearch(data_t s[], data_t Key, int n){
        int i;
        i = 0;
        while (i < n && s[i] != Key)
            i++;
    
        if (s[i] == Key)
            return i;
        else
            return -1;
    }
    
    //对半查找-递归
    int binarySearch_1(data_t s[], data_t x, int low, int high)
    {
        int mid;
        if (low > high) return -1;
        mid = (low + high) / 2;
        if (x == s[mid])
            return mid;
        if (x < s[mid])
            return (binarySearch_1(s, x, low, mid - 1));
        else
            return (binarySearch_1(s, x, mid + 1, high));
    }
    
    //对半查找-非递归
    int binarySearch_2(data_t s[], data_t x, int n)
    {
        int mid, low, high;
        low = 0;
        high = n - 1;
        while (low <= n - 1) {
            mid = (low + high) / 2;
            if (s[mid] == x)
                return mid;
            else if (s[mid] < x)
                low = mid + 1;
            else 
                high = mid - 1;
        }
        return -1;
    }

    测试代码

    int main(int argc, char *argv[])
    {
        int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        int i;
    
    //顺序查找    
        if ((i = seqSearch(a, 6, 10)) != -1) {
            printf("seqsearch: pos at %d 
    ", i);
        } else {
            printf("seqsearch error, no this key
    ");
        }
    //对半查找-递归
        if ((i = binarySearch_1(a, 6, 0, 9)) != -1) {
            printf("binarySearch_1: pos at %d 
    ", i);
        } else {
            printf("binarySearch_1 error, no this key
    ");
        }
    //对半查找-非递归
        if ((i = binarySearch_2(a, 6, 10)) != -1) {
            printf("binarySearch_2: pos at %d 
    ", i);
        } else {
            printf("binarysearch_2 error, no this key
    ");
        }
        
        return 0;
    }

    结果

    seqsearch: pos at 6 
    binarySearch_1: pos at 6 
    binarySearch_2: pos at 6 
  • 相关阅读:
    delphi 线程的使用
    mysql + unidac 使用事务例子
    unidac 执行Execute后取得受影响行数。
    关于UNIDAC连接SQLITE3的心得笔记
    FIREDAC的心得
    unidac连接ORACLE免装客户端驱动
    delphi 2010安装unidac
    DELPHI中使用UNIDAC连接ORACLE数据库
    Struts2思维导图
    面试经验And总结
  • 原文地址:https://www.cnblogs.com/vsyf/p/4991414.html
Copyright © 2011-2022 走看看