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 
  • 相关阅读:
    Unity3d设置QualitySettings为Beautiful Xcode发布错误
    滚轮拉近相机
    (转)oracle
    (转)Oracle存储过程基本语法
    (转)Oracle执行字符串
    (转)Oracle 临时表用法
    安装包范例
    (转)使用PowerDesigner生成HTML功能
    (转)winform下TCP通信的简单应用
    (转)winform下UPD通信的简单应用
  • 原文地址:https://www.cnblogs.com/vsyf/p/4991414.html
Copyright © 2011-2022 走看看