#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;
}