折半查找

来源:互联网 发布:linux进入用户命令 编辑:程序博客网 时间:2024/06/08 07:19

折半查找时一种效率很高的查找方法,当没必要使用for循环每一个遍历的时候,折半查找就是一个很好的选择

#include<stdio.h>

int binary_search(int arr[], int key, int left, int right)
{
int mid = 0;


while(left<=right)
{
mid = left-(left-right)/2;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid]<key)
{
left = mid+1;
}
else
{
return mid;
}
}
if(left>right)
{
return -1;
}
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int key = 6;
int ret = binary_search(arr, key, 4, 8);  //后面的4和8是规定了查找的左右界限,利于查找
if(ret != -1)
{
printf("找到了\n");
}
else
{
printf("没找到\n");
}
getchar();
return 0;

}


当然了如果想要输出下标,只要加入适当程序段就能实现,具体改动可以自己往里面添加。

1 0
原创粉丝点击