两种二分查找方式(迭代和递归),今天又被广数鄙视了,唉

    技术2022-05-19  26

    #include <iostream> using namespace std; int binary_search(int str[], int n, int v) {     int left = 0;     int right = n - 1;     int middle;     while (left <= right)     {

            middle = (left + right)/2;         if (str[middle] > v)         {             right = middle - 1;         }         else if (str[middle] < v)         {             left = middle + 1;         }         else             return middle;     }     return -1; } int recursiveBinarySearch(int str[], int left, int right, int v) {     if (left < right)     {         int middle = (left + right)/2;         if (str[middle] > v)         {             return recursiveBinarySearch(str, left, middle - 1, v);         }         else if (str[middle] < v)         {             return recursiveBinarySearch(str, middle + 1, right, v);         }         else             return middle;     }     else if (left == right)     {         if (str[left] == v)         {             return left;         }         else             return -1;     } } int _tmain(int argc, _TCHAR* argv[]) {     int str[10] = {1, 3, 23, 34, 45, 65, 454, 555, 666, 2323};     printf("find 34 by recursiveBinarySearch: %d/n", recursiveBinarySearch(str, 0, 9, 343));     getchar();     return 0; }


    最新回复(0)