您的位置:首页 > 理论基础 > 数据结构算法

数据结构查找-二分查找

2015-05-27 15:24 344 查看
二分查找是只适用于有序的序列,每次都缩小一半查找范围的查找方法。

二分查找也叫做折半查找。

步骤:

首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置将表分成前后两个子表。

重复以上步骤。

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

int binarysearch(int *array,int key,int low,int high)
{
int mid;
while(low<=high)
{
mid = (low + high)/2;
if(key == array[mid])
return mid;
else if(key<array[mid])
high = mid-1;
else
low = mid+1;
}
return 0;
}
int main()
{
int n,i,key,position;
int *array;
printf("input size of array:\n");
scanf("%d",&n);
array = (int*)malloc(sizeof(int)*n);
printf("input data as asc");
for(i=0;i<n;i++)
scanf("%d",&array[i]);
printf("input what you want:\n");
scanf("%d",&key);
if(position = binarysearch(array,key,0,n-1))
printf("the position of %d is %d\n",key,position);
else
printf("no exist %d",key);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: