您的位置:首页 > 编程语言

【整理】二分查找及代码实现

2015-06-07 16:05 225 查看
二分查找算法又称折半查找算法

(1) 算法流程

假设样本数据从小到大依次排列,首先选择中间元素进行比较,如果相等,则直接返回,表示查找成功;如果 目标元素大于中间元素,则去中间元素的右侧进行查找,如果目标元素小于中间元素,则去中间元素的左侧进行查找,重复以上过程,直到找到满足条件的元素表示查找成功,或者没有找到,表示查找失败

(2) 算法评价

平均时间复杂度O(logN)

** 样本数列必须有序

******************************************************************************************
二分查找代码:
#include <stdio.h>

//实现二分查找的功能函数
int find(int arr[], int left, int right, int data)
{
//保证数组中确实存在元素
if (left <= right)
{
//计算中间元素的下标
int p = (left + right) / 2;
//寻找中间元素进行比较
if (data == arr[p])
{
return p;
}
//如果目标元素小于中间元素,左边查找
else if (data < arr[p])
{
return find(arr, left, p-1, data);
}
//如果目标元素大于中间元素,右边查找
else
{
return find(arr, p+1, right, data);
}
}
return -1; //表示查找失败
}

int main(void)
{
int arr[5] = {1, 2, 3, 4, 5};
printf("目标元素所有的下标是:%d\n", find(arr, 0, 4, 4));
return 0;
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: