查找算法01-顺序查找


查找定义: 根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。

知识分享:热门博客

1、顺序查找

说明:顺序查找适合于存储结构为顺序存储或链接存储的线性表。
基本思想: 顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。
复杂度分析:
查找成功时的平均查找长度为:(假设每个数据元素的概率相等) ASL = 1/n(1+2+3+…+n) = (n+1)/2 ;
当查找不成功时,需要n+1次比较,时间复杂度为O(n);
所以,顺序查找的时间复杂度为O(n)。

1-1实现代码

  • Java实现方式一:
public static int search1(int[] a,int key) {
		for(int i=0,length=a.length;i<length;i++) {
			if(a[i]==key) {
				return i;  //找到返回下标
			}
		}
		return -1; //未找到
	}
  • Java实现方式二:
public static int search2(int[] a,int key) {
		int index=a.length-1;
		if(key==a[index])
			return index;
		a[index]=key;
		int i=0;
		while(a[i++]!=key);
		return i==index+1?-1:i-1;
	}

1-2测试

		int arr[]= {1,2,3,4,5,6,7,8,9,10};
		int result1=search1(arr,6);
		System.out.println("result1 = "+result1);
		int result2=search2(arr,6);
		System.out.println("result2 = "+result2);
  • 输出结果:
    在这里插入图片描述

1-3方法解析

方式一: 无论是有序的还是无序的都可以,也不需要排序,只需要一个个对比即可,但其实效率低。
方式二: 如果找到就返回查找的数所在数组中的下标,如果没有找到就返回-1.还有方式一的实现可以优化,使用一个哨兵,免去了每次都要越界的判断,但通过实际测试运行效率并没有提高,无论测试的数据是多还是少运行的时间都差不多。

下篇博文:查找算法02-二分法查找

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值