算法:当数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的. 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功:若 x 小于当前位置值,则在数列的前半段中查找:若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止. 假设有一个数组 { 1,2,3,4,5,6,7,8,9,10 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1.代码如下: public class Dichoto…
查找功能是数据处理的一个基本功能.数据查找并不复杂,但是如何实现数据又快又好地查找呢?前人在实践中积累的一些方法,值得我们好好学些一下.我们假定查找的数据唯一存在,数组中没有重复的数据存在. (1)顺序查找(普通的数据查找) 设想有一个1M的数据,我们如何在里面找到我们想要的那个数据.此时数据本身没有特征,所以我们需要的那个数据可能出现在数组的各个位置,可能在数据的开头位置,也可能在数据的结束位置.这种性质要求我们必须对数据进行遍历之后才能获取到对应的数据. int find…
递归函数: 如果函数包含了对其自身的调用,该函数就是递归的: example 1:二分法查找的实现: def find_recursion(l,aim,start=0,end=None): #end不能直接赋值len(l),因为列表l可能在函数后面定义: end=len(l) if end is None else end mid_idex = (end - start) // 2 + start if end>=start: #如果start>end,则寻找的值不存在: if l[mid_i…
二分法查找适用于排列有序的数据.java实现方法如下: // Find the location of a value in array a // Array a must be sorted // Return -1, if the value is not in a public static int binarySearch(int value, int[] a) { int lo = 0; int hi = a.length -1; int mid = lo + (hi - lo) /…