折半查找
来源:互联网 发布:数据调查报告 编辑:程序博客网 时间:2024/06/12 02:02
说明:元素必须是有序的,如果是无序的则要先进行排序操作。
基本思想:也称为是折半查找,属于有序查找算法。将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果
复杂度分析:最坏情况下,关键词比较次数为log(n+1),且期望时间复杂度为O(logn);
注:折半查找的前提条件是需要有序表顺序存储,对于静态查找表,一次排序后不再变化,折半查找能得到不错的效率。但对于需要频繁执行插入或删除操作的数据集来说,维护有序的排序会带来不小的工作量,那就不建议使用。——《大话数据结构》
public class Binary { public static int Select(int[] arr, int value){ int mid; int low = 0; int high = arr.length - 1; while(low <= high){ mid = (low + high)/2; if(arr[mid] < value){ low = mid + 1; } if(arr[mid] > value){ high = mid - 1; } if(arr[mid] == value) return mid; } return -1; } public static void main(String[] args) { int[] arr = {1,2,3,4,5,6,7,8,9}; System.out.println("2的下标为: " + Select(arr, 2)); }}
0 0
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题 .
- 在一个类里面 成员函数之间的互相调用
- 首次运行idea建spring boot遇到的问题
- 算法导论读书笔记(1)
- Android Linker 与 SO 加壳技术
- 折半查找
- continue break 与return区别于联系
- c++ 调用lua函数简单案例
- Payment:支付宝即时到账接口接入教程
- [qemu]Hyper-V Enlightenments
- 算法导论读书笔记(2)
- jQuery对Ajax的封装
- 九度OJ 1442 A sequence of numbers
- 回文串