• 折半查找(递归和非递归实现)


     1 #include "stdafx.h"
     2 #include <iostream>
     3 using namespace std;
       //折半查找(非递归调用)
     6 bool binarySearch(int *arr,int low,int high,int key)
     7 {
     8     while (low<=high) {//必须为有=
     9         int mid = (low + high) / 2;
    10         if (arr[mid] > key) {
    11             high = mid - 1;
    12         }
    13         else if (arr[mid]<key) {
    14             low = mid + 1;
    15         }
    16         else {
    17             return true;
    18         }
    19     }
    20     return false;
    21 }
    23 //折半查找递归调用
    24 bool binarySearch(int *arr,int low,int high,int key)
    25 {
    26     if (low>high) {  //递归退出条件
    27         return false;
    28     }
    29     int mid = (low + high) / 2;
    30     if (arr[mid]>key) {
    31         return binarySearch(arr,low,mid-1,key);
    32     }
    33     else if(arr[mid]<key){
    34         return binarySearch(arr,mid+1,high,key);
    35     }
    36     else {
    37         return true;
    38     }
    39 }
    40 
    41 //
    42 int main()
    43 {
    44     int arr[10] = {0,1,2,3,4,5,6,7,8,9};
    45     int key;//要查找的值
    46     cin >> key;
    47     bool flag=binarySearch(arr,0,9,key);
    48     if (flag) {
    49         cout << "查找成功!" << endl;
    50     }
    51     else {
    52         cout << "查找失败!" << endl;
    53     }
    54     return 0;
    55 }
  • 相关阅读:
    vue 中简单路由的实现
    Vue中对生命周期的理解
    内存泄漏
    前端工程化
    exports 和 module.exports 的区别
    Nodejs的url模块方法
    MongoDB 的获取和安装
    Anjular JS 的一些运用
    移动端vconsole调试
    安装fiddler时,电脑浏览器没网
  • 原文地址:https://www.cnblogs.com/dingou/p/5782127.html
Copyright © 2020-2023  润新知