四种常用查找算法简单应用

本文介绍了四种常见的查找算法:顺序查找、二分查找、插值查找和斐波那契查找。顺序查找适合无序序列,但效率较低。二分查找适用于有序序列,效率较高。插值查找在关键字分布均匀时能提升查找效率。斐波那契查找利用黄金分割比优化查找过程,同样适用于有序序列。
摘要由CSDN通过智能技术生成


———————————————————————————————————————

顺序查找(被查找的序列可以无序)

线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败。

由于顺序查找是从头插到尾,所以这种方法的查询时间慢。

代码实现
public class SeqSearch {
   
	public static void main(String[] args) {
   
		int arr[] = {
    1, 9, 11, -1, 34, 899, 899, 899 };// 没有顺序的数组

		List<Integer> list = seqSearch(arr, 899);//查找899
		System.out.println(list);
	}

	public static List<Integer> seqSearch(int[] arr, int value) {
   
		List<Integer> list = new ArrayList<Integer>();
		for (int i = 0; i < arr.length; i++) {
   //遍历数组
			if (value == arr[i]) {
   //如果找到就放进集合中,继续往下找。
				list.add(i);
			}
		}
		return list;
	}
}

查找 899 返回结果下标5、6、7查找成功。
在这里插入图片描述
———————————————————————————————————————

二分查找(被查找的序列需有序)

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

查找思路

在这里插入图片描述

代码实现

我以{1,2,3,4,5,6,6,6}这个数组作为被查询序列,下面代码使用情景为序列从小到大排序。

public static List<Integer> binarySearch(int arr[], int left, int right, int findVal) {
   
		int mid = (left + right) / 2;
		int midVal = arr[mid];

		if (left > right) {
   //left > right代表序列没有要找的元素
			return new ArrayList<Integer>();
		}

		if (findVal > midVal) {
   // 查找元素大于中间值,向右递归
			return binarySearch2(arr, mid + 1, right, findVal);
		}

		if (findVal <
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值