zoukankan      html  css  js  c++  java
  • 二分查找实现

    1.  #include <iostream>  
    2.   
    3. using namespace std;  
    4.   
    5. /* 
    6. *二分查找思想:1、数组从小到大排序;2、查找的key每次和中间数比较,如果key小于mid 
    7. 查找mid左侧的数组部分;如果key大于mid,则查找mid右侧的数组部分;如果相等,则直接返回mid。 
    8.  
    9. 输入:排序数组-array,数组大小-aSize,查找值-key 
    10. 返回:返回数组中的相应位置,否则返回-1 
    11. */  
    12. //非递归查找  
    13. int BinarySearch(int *array, int aSize, int key)  
    14. {  
    15.     if ( array == NULL || aSize == 0 )  
    16.         return -1;  
    17.     int low = 0;  
    18.     int high = aSize - 1;  
    19.     int mid = 0;  
    20.   
    21.     while ( low <= high )  
    22.     {  
    23.         mid = (low + high )/2;  
    24.           
    25.         if ( array[mid] < key)  
    26.             low = mid + 1;  
    27.         else if ( array[mid] > key )     
    28.             high = mid - 1;  
    29.         else  
    30.             return mid;  
    31.     }  
    32.     return -1;  
    33. }  
    34. //递归  
    35. int BinarySearchRecursive(int *array, int low, int high, int key)  
    36. {  
    37.     if ( low > high )  
    38.         return -1;  
    39.     int mid = ( low + high )/2;  
    40.       
    41.     if ( array[mid] == key )  
    42.         return mid;  
    43.     else if ( array[mid] < key )  
    44.         return BinarySearchRecursive(array, mid+1, high, key);  
    45.     else  
    46.         return BinarySearchRecursive(array, low, mid-1, key);  
    47. }  
    48.   
    49. int main()  
    50. {  
    51.     int array[10];  
    52.     for (int i=0; i<10; i++)  
    53.         array[i] = i;  
    54.   
    55.     cout<<"No recursive:"<<endl;  
    56.     cout<<"position:"<<BinarySearch(array, 10, 6)<<endl;  
    57.     cout<<"recursive:"<<endl;  
    58.     cout<<"position:"<<BinarySearchRecursive(array, 0, 9, 6)<<endl;  
    59.   
    60.     return 0;  
  • 相关阅读:
    streamsets 集成 cratedb 测试
    streamsets k8s 部署试用
    streamsets rest api 转换 graphql
    StreamSets sdc rpc 测试
    StreamSets 相关文章
    StreamSets 多线程 Pipelines
    StreamSets SDC RPC Pipelines说明
    StreamSets 管理 SDC Edge上的pipeline
    StreamSets 部署 Pipelines 到 SDC Edge
    StreamSets 设计Edge pipeline
  • 原文地址:https://www.cnblogs.com/xiaoxiong0222/p/4491527.html
Copyright © 2011-2022 走看看