私のバイナリサーチコードは、このコードでは動作しませんなぜ私は思ったんだけど(見られるように、それはすべてを返す):私のバイナリ検索は、if文がこの順番でしか動作しないのはなぜですか?
int BinarySearch(int arr[], int len, int target) {
int first = 0;
int last = len-1;
int mid = (first+last)/2;
while (first <= last) {
mid = floor((first+last)/2);
if (target = arr[mid]) {
return 1;
} else if (target < arr[mid]) {
last = mid-1;
} else {
first = mid+1;
}
}
return -1;
}
しかし、次の作品を。唯一の違いは、whileループのif文の順序です。
int BinarySearch(int arr[], int len, int target) {
int first = 0;
int last = len-1;
int mid = (first+last)/2;
while (first <= last) {
mid = floor((first+last)/2);
if (arr[mid] < target) {
first = mid+1;
} else if (target = arr[mid]) {
return 1;
}
else { //arr[mid] < target
last = mid-1;
}
}
return -1;
}
場合(使用しそうであるように間違っている** == * * arr [mid]) – Ari0nhh
2番目のコードは実際に動作しますか? –