在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1(折半查找)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int  bin_search(int a[], int size, int num) {
	int left = 0;
	int right = size - 1;
	int mid = 0;
	while (left<=right) {
		mid = (left + right) / 2;
		if (num > a[mid]) {
			left = mid + 1;
		}
		else if (num < a[mid]) {
			right = mid - 1;
		}
		else {
			return mid;
			break;
		}
	}
	if (left > right) {
	
		return -1;
	}
}
int main() {
	int arr[10] = {15,36,59,71,93,118,143,189,245,333 };
	int input = 0;
	printf("输入你要查找的数:");
	scanf("%d", &input);
	printf("\n");
	int size = sizeof(arr) / sizeof(arr[0]);
	int ret=bin_search(arr, size, input);
	if (ret >= 0) {
		printf("已找到,下标是%d!\n\n", ret);
	}
	else {
		printf("找不到你查找的数!\n\n");
	}
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43267837/article/details/88776267