查找算法以及代码实现

本文介绍了四种查找算法:线性查找、二分查找、插值查找和斐波那契查找。线性查找是最基础的查找算法,而二分查找在有序数组中效率较高。插值查找根据关键字分布进行调整,适合均匀分布的数据。斐波那契查找利用黄金分割点提高查找效率,尤其适用于特定长度的序列。每种算法都提供了相应的代码实现。
摘要由CSDN通过智能技术生成

1.线性查找算法

特别简单的算法,就是遍历数组,一一比较,返回坐标
代码实现:

public static void main(String[] args) {
		int arr[] = { 1, 9, 11, -1, 34, 89 };// 没有顺序的数组
		int index = seqSearch(arr, -11);
		if(index == -1) {
			System.out.println("没有找到到");
		} else {
			System.out.println("找到,下标为=" + index);
		}
	}

	/**
	 * 这里我们实现的线性查找是找到一个满足条件的值,就返回
	 * @param arr
	 * @param value
	 * @return
	 */
	public static int seqSearch(int[] arr, int value) {
		// 线性查找是逐一比对,发现有相同值,就返回下标
		for (int i = 0; i < arr.length; i++) {
			if(arr[i] == value) {
				return i;
			}
		}
		return -1;
	}

2.二分法查找算法

二分查找的思路分析

  1. 首先确定该数组的中间的下标
    mid = (left + right) / 2
  2. 然后让需要查找的数 findVal 和 arr[mid] 比较
  3. 1 findVal > arr[mid] , 说明你要查找的数在mid 的右边, 因此需要递归的向右查找
    2.2 findVal < arr[mid], 说明你要查找的数在mid 的左边, 因此需要递归的向左查找
    2.3 findVal == arr[mid] 说明找到,就返回

//什么时候我们需要结束递归.

  1. 找到就结束递归
  2. 递归完整个数组,仍然没有找到findVal ,也需要结束递归 当 left > right 就需要退出
    递归代码实现:
public static int binarySearch(int arr[],int left,int right,int findVal){
		if (left>right) {
			return -1;
		}
		int mid = (left+right)/2;
		int midvalue = arr[mid];
		if (findVal <midvalue) { //向左递
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值