二分探索を C 言語で書く方法を教えてください。
以下に、C 言語で作成した二分探索アルゴリズムのサンプル コードを示します。
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
}
if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
// 当查找不到目标元素时,返回-1表示查找失败
return -1;
}
int main() {
int arr[] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50};
int target = 30;
int size = sizeof(arr) / sizeof(arr[0]);
int result = binarySearch(arr, 0, size - 1, target);
if (result == -1) {
printf("目标元素 %d 未找到\n", target);
} else {
printf("目标元素 %d 在数组中的索引为 %d\n", target, result);
}
return 0;
}
このコードを実行すると「対象要素 30 は配列内にインデックス 5 で存在します」という文が表示され、対象要素 30 が配列内でインデックス 5 にあることを示します。対象要素が配列内に存在しない場合は「対象要素 30 は見つかりません」という文が表示されます。