二分搜索算法
二分搜索算法是运用分治策略的一个典型例子。给定已排好序的n个元素arr[0:n-1],现要在这n个元素中找到一个特定元素key。首先我们可以顺序搜索,逐个比较arr[0:n-1]中的元素,直至找出元素x或搜索整个数组一遍发现key不再其中。但是这个算法没利用好已排好序这个性质,并且在最坏的情况下,需要O(n)次比较(把整个数组都搜索一遍)。
二分搜索方法充分利用了元素间的次序关系,采用了分治策略,可在最坏情况下用O(logn)时间完成搜索任务。二分搜索算法的基本思想是,将n个元素分成个数大致相同的两半,取arr[n/2]与key作比较。如果key=arr[n/2],则找到了key,算法终止;如果key<arr[n/2],则只在数组arr的左半部继续搜索key;如果key>arr[n/2],则只在数组arr的右半部继续搜索key。具体算法程序如下:
#include<stdio.h>
int Binary_Search_(int arr[], int key, int n)
{
int left = 0, right = n