通用二分查找
来源:互联网 发布:梦幻西游手游辅助mac 编辑:程序博客网 时间:2024/04/30 05:07
这是极其简单的一个算法,正是因为其简单,我经常被其搞死。不管是在比赛时还是在面试时,我都在这上面栽过跟头。因为其简单,所以总也不愿花过多时间来写它,总想一气呵成,但总也呵不成,于是脑袋越来越混乱,情绪越来越激动,于是悲剧随之而来。
二分查找要求被查找数组是排好序的数组,其时间复杂度为O(log(n)),也就是说1亿的数据量大概运行26次就能求出结果。
#include <stdio.h>#include <stdlib.h>int b_search(void* arr, int n, int(*cmp)(void*, void*), void* key, int size){ int left = 0, right = n - 1, mid = 0; while (left <= right) { mid = (left + right) / 2; if (cmp(key, (char*)arr + mid * size) == 0) return mid; else if (cmp(key, (char*)arr + mid * size) < 0) right = mid - 1; else left = mid + 1; } return -1;}
- 二分查找通用函数
- 通用二分查找
- 比较规整通用的二分查找
- c语言实现的通用二分查找算法
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- jdk+myeclipse+wtk搭建j2me开发环境
- java 堆栈的区别
- TableRules的使用
- 管理报文碎片(XML)
- LCA----最近公共祖先
- 通用二分查找
- 超强获取win7最高管理员权限
- Ubuntu 安装xbmc播放器
- Git分支管理策略
- This is bug!
- 大型互联网站解决高并发的常见策略
- Java TCP/IP协议笔记之UDP 套接字
- android 获取当前系统时间
- Java 按位与(&)和短路与(&&)按位或(|)和短路或(||)的区别总结