私はバイナリ検索の分割統治バージョンを作成しようとしていますが、配列を2つのサブ配列に分割し、マージソートでのマージに似た検索を行うものです。これは、cilkで使用したいためです。私はそれをそのようにしなければなりません。これは私が書いたコードです。有効なキー値に -1 を返すので、何か問題があるようです。
#include <stdio.h>
#include "BinarySearch.h"
int main () {
int a[] = {0,1,2,3,4,5,6,7,8,9};
int index = binarySearch(a, 0, 9, 7);
printf("%i", index);
return 0;
}
int binarySearch (int* A, int first, int last, int key) {
if (last < first)
return -1;
else {
int mid = (last + first) / 2;
if (A[mid] == key)
return mid;
int x, y;
x = binarySearch(A, first, mid - 1, key);
y = binarySearch(A, mid + 1, last, key);
if (x == -1 && y == -1)
return -1;
else if (x == -1 && y != -1)
return y;
else
return x;
}
}