简单查找算法

这篇博客详细介绍了四种查找算法:线性查找、递归与非递归的二分查找、插值查找以及斐波那契查找。线性查找是最基础的算法,适合任意排列的数组;二分查找则要求数组有序,通过不断二分缩小查找范围。插值查找利用数学公式改进了查找效率;斐波那契查找则借鉴了斐波那契数列的特性。代码示例展示了二分查找的递归实现。
摘要由CSDN通过智能技术生成

1.线性查找

原生概念:和一条直线一样的查找算法

数学概念:查找次数和时间复杂度成一次发的线性查找算法,就是一对一一个一个找(和普通人的逻辑思维是一样的)

2.二分查找(递归,非递归)

原生概念:将数据分为两段,进行查找,可以节省大部分时间

数学概念:二分查找的关键是基准的选择,不断的二分直到找到对应数据或者是没有找到数据,一般的简单的二分法(数字查找),选择的基准是中间,通过与基准的比较大小来选择是向右边还是左边进行查找,由此可以的得出通过二分查找的的数组是需要有序数组

代码实现(暂时学习的递归的方法实现)

package Lookup;
public class Erfefachazhao {

	public static void main(String[] args) {
       int arr[]= {1,2,3,4,5,6,7,8,9,10};
       
      int a= ErFen(arr, 0, arr.length-1,10);
      
      
      if (a==-1) {
		System.out.println("没有此数据");
	}else {
		System.out.println("找到数据  下标为:"+a);
		
	}
	}

public static int ErFen(int []arr ,int left ,int right,int value) {
	
	//创建中间基
	int mid=(left+right)/2;
  
	if (left>right) {
		
		return -1;
		
	}
	//右递归
	if (value >arr[mid]) {
	return	ErFen(arr, mid+1, right, value);
		
	//左递归
	} else if (value<arr[mid]){
	return	ErFen(arr, mid-1, right, value);
		
	}else {	
		return mid;	
	}
	}
}	

3.插值查找算法(插值查找公式)

理解:插值查找算法和二分查找算法非常相似,关键在插值查找算法利用了插值公式(数学公式),利用插值公式来确定基准

4.斐波那契查找(黄金分割)

理解:利用斐波那契数列的特性进行查找,也有具体的特性,基准在黄金分割点附近

如果没有批评,赞美将毫无意义,欢迎指正批评。

路漫漫其修远兮,吾将上下而求索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值