二分查找详解
来源:互联网 发布:网络主播自慰直播视频 编辑:程序博客网 时间:2024/06/08 02:15
基本概念:
在计算机科学中,二分搜索(binary search),也称折半搜索(half-interval search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
时间复杂度:
折半搜索每次把搜索区域减少一半,时间复杂度为O(logn)
简单例子:
#include <stdio.h>/* 返回找到的下标 */int binary_search(const int arr[], int start, int end, int key){ int mid; while (start <= end) { mid = start + (end - start) / 2; /* 直接相加再求平均可能会溢出 */ if (arr[mid] < key) start = mid + 1; else if (arr[mid] > key) end = mid - 1; else return mid; } return -1;}int main(){ int arr[] = {1, 3, 5, 7, 9, 10, 12, 34, 77, 87}; int size = sizeof(arr) / sizeof(int); int start = 0; //find 5 int key = 5; int index = binary_search(arr, start, size-1, key); if (index == -1) { printf("not found %d\n", key); } else { printf("found %d\n", key); } key = 88; index = binary_search(arr, start, size-1, key); if (index == -1) { printf("not found %d\n", key); } return 0;}
编译运行:
原文出自:http://blog.csdn.net/daiyudong2020/article/details/52601340
End;
0 0
- 二分查找详解
- 二分查找详解
- java二分查找详解
- 二分查找详解
- 二分查找/二分搜索(binary_search)详解
- 二分查找法过程详解
- 二分查找的平均查找长度详解
- php 二分查找法算法详解
- 二分查找、快速排序对比和详解
- 二分查找算法详解以及java实现
- 不同情况的二分查找详解
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- MySql基础知识总结
- 关于Sublime安装packaga control
- 实战学习NodeJS建站(2)—blog结构,request&response,结合bootstrap
- 权限控制之Shiro框架--初步了解篇
- 观察者模式
- 二分查找详解
- JSR303规范
- 使用命令wsimport构建WebService客户端
- Java编程题目-12:字符串的construct
- Go语言通过指令的方式拷贝文件
- 拆分n个符号的方法
- Windows::Rtl::ObjAttrFromName
- Intent属性详解一 component属性
- spring-boot+mybatis开发实战:如何在spring-boot中使用myabtis持久层框架