zoukankan      html  css  js  c++  java
  • 数据结构 二分法查找

    /* 二分法查找 */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    /*
    二分法查找是一种在有序数组中查找特定元素的搜索算法
    二分法查找的时间复杂度O(logn)
    */
    
    //递归算法
    int recurbinary(int *a, int key, int low, int high)
    {
        int mid;
        if (low > high)
        {
            return -1;
        }
    
        mid = low + (high - low) / 2;
        if (a[mid] == key)
        {
            return mid;
        }
        else if (a[mid] > key)
        {
            return recurbinary(a, key, low, mid - 1);
        }
        else
        {
            return recurbinary(a, key, mid + 1, high);
        }
            
    }
    
    //非递归算法
    int binary(int *a, int key, int n)
    {
        int left = 0, right = n - 1, mid = 0;
    
        mid = left + (right - left) / 2;
        while (left < right && a[mid] != key)
        {
            if (a[mid] < key) 
            {
                left = mid + 1;
            }
            else if (a[mid] > key)
            {
                right = mid;
            }
            mid = (left + right) / 2;
        }
    
        if (a[mid] == key)
        {
            return mid;
        }
    
        return -1;
    
    }
    
    int test()
    {
        int a[] = { 1,2,3,4,5,6,7,8,9,12,13,45,67,89,99,101,111,123,134,565,677 };
        int b[] = { 677,1,7,11,67 };
        int i = 0;
        for (i = 0; i < sizeof(b) / sizeof(b[0]); i++)
        {
            printf("%d
    ", binary(a, b[i], sizeof(a) / sizeof(a[0])));
        }
        return 0;
    }
    
    int main()
    {
        test();
        printf("-----ok------
    ");
        getchar();
        return 0;
    }
  • 相关阅读:
    我要录视频XML(一)
    JavaScript入门基础 (一)
    JQuery 入门24条
    3.The IoC container
    关于jquery.fn
    apche禁止列表显示文件夹中文件,并且显示特定界面
    Struts 2 + Spring 2 + JPA + AJAX
    3.The IoC container(2)
    4.9 Annotationbased container configuration
    3.5 Bean scopes
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/10852810.html
Copyright © 2011-2022 走看看