常见的查找算法有顺序查找、二分查找、插值查找、黄金查找。顺序查找是最基本的查找方式,即按顺序比较,直到找到目标元素。二分法查找是基于有序的基础上进行的,通过比较序列的中间值来折半缩小查找的区间,从而实现快速的查找,虽然二分法查找已经到了一个较快的水平但是当我们要的目标元素是位于序列的两端时,仍然还是会产生一些额外的折半开销,因为二分查找在一定的局部空间内是从中间开始的,所以位于两端的元素的查找就会有一个较多的折半次数,才可以定位到目标元素。插值查找通过一个均值算法解决了二分法查找的这个缺点,但是插值查找是在序列元素有分布较为均匀的时候才有一个更好的表现,如果序列中的元素分布不均匀那么插值查找的算法未必优于二分查找。总的来说二分查找与插值查找的实现思路是相同的。黄金查找又称为黄金分割查找、斐波那契查找,他利用的原理是黄金分割比(0.618)。
public class SeqSearch {
public static void main(String[] args) {
int arr[] ={1,9,11,-1,34,89};
int index = seqSearch(arr,144 );
if(index==-1){
System.out.println("没有找到");
}else{
System.out.println("下表为:"+index);
}
}
public static int seqSearch(int[] arr,int value){
//如果要是要找到序列中所有的目标元素,可以用一个集合对找到的结果进行一个存储
//最后返回这个结果集合
for (int i = 0; i < arr.length; i++) {
if(arr[i]==value){
return i;
}
}
return -1;
}
}