二分查找

二分查找实现

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

int main(int argc, char *argv[])
{
	int arr[100] = { 0 };
	for (int i = 0; i < 100; i++)
	{
		arr[i] = i;
		printf("%-4d", arr[i]);
		if ((i + 1) % 10 == 0)
		{
			printf("\n");
		}
	}
	printf("======================================\n");
	while (1)
	{
		int num;
		scanf("%d", &num);
		int header = 0;
		int footer = 99;

		int count = 0;
		int flag = 0;
		while (header <= footer)
		{
			int mid = (header + footer) / 2;
			int tmpData = arr[mid];
			if (tmpData == num)				
			{
				flag = 1;
				printf("查找%d次,在数组中找到%d 索引下标为%d\n", count, tmpData, mid);
				break;
			}
			else if (tmpData > num)			
			{
				footer = mid - 1;
			}
			else
			{
				header = mid + 1;
			}
			count++;
		}
		if (!flag)
		{
			printf("查找%d次,没有找到该数据%d\n", count, num);
		}
	}
	system("pause");
	return 0;
}

效果图

二分查找效果图
秋风 2016-07-17