alex_bn_lee

导航

【437】Binary search algorithm,二分搜索算法

Complexity: O(log(n))

Ref: Binary search algorithm or 二分搜索算法

Ref: C 版本 while 循环

C Language scripts by McDelfino:

#include <stdio.h>
#include <stdlib.h>

int getIndex(int* arr, int length, int num);

int main() {
	int arr[100];
	
	for (int i = 0; i < 100; i++) {
		arr[i] = i + 1;
	}
	
	for (int i = 1; i <= 100; i++) {
		printf("num = %d, find index = %d.\n", i, getIndex(arr, 100, i));
	}

	return 0;
}

int getIndex(int* arr, int length, int num) {
	int min = 0;
	int max = length - 1;
	int count = 0;
	while (1) {
		int avg = (min + max)/2;
		count++;
		if (arr[avg] < num) min = avg + 1;
		else if (arr[avg] > num) max = avg - 1;
		else {
			printf("-----count = %d-----\t", count);
			return avg;
		}
	}
}

 

 

posted on 2019-09-10 13:07  McDelfino  阅读(294)  评论(0)    收藏  举报