编辑代码

#include <iostream>
using namespace std;
void printArray(int array[], int arrLen) {
    for (int i = 0; i < arrLen; ++i) {
        cout << array[i] << " ";
    }
    cout << endl;
}

int searchSortedArray(int searchKey, int array[], int arrLen) {
   int low = 0;
   int high = arrLen - 1;
   int keyPos = -1;

   while (low <= high) {
       int mid = low +((high - low + 1) >> 1);
       if (searchKey == array[mid]) {
           keyPos = mid;
           break;
       }
       else if (searchKey > array[mid]) {
           low = mid + 1;
       }
       else {
           high = mid - 1;
       }
   }
   return keyPos;
}

int binarySearchRecurse(int searchKey, int array[], int low, int high) {

    int keyPos = -1;
    if (low <= high) {
         int mid = low +((high - low + 1) >> 1);
        if (searchKey == array[mid]) {
            keyPos = mid;
        }
        else if (searchKey > array[mid]) {
            keyPos = binarySearchRecurse(searchKey, array, mid + 1, high);
        }
        else {
            keyPos = binarySearchRecurse(searchKey, array, low, mid - 1);

        }
    }

   
    return keyPos;
}

int searchSortedArrayRecurse(int searchKey, int *array, int arrLen) {
   int low = 0;
   int high = arrLen - 1;
   int keyPos = binarySearchRecurse(searchKey, array, low, high);

   return keyPos;
}


int main(){
    int a[] = {1, 1, 2, 3, 4, 5, 6};
    int arrayLen = sizeof(a)/sizeof(int);

    printArray(a, arrayLen);
    cout << "数字的位置: "<< searchSortedArray(2, a, arrayLen) << endl;
    cout << "数字的位置: "<< searchSortedArrayRecurse(2, a, arrayLen) << endl;
  return 0;  
    }