Java数据结构——顺序查找+折半查找

静态查找:

  • 分为顺序查找和折半查找。(或线性查找和二分查找)。
  • 一个数据项或记录的数据结构:
typedef struct {
   
	KeyType key; // 关键字域
	...  // 其他域
}DataItem;

一、顺序查找

(一)、定义

  • Sequential Search,函数命名:sequentialSearch;
  • 顺序查找:可用在顺序储存结构 ( 顺序表 )线性链表结构 链表 中。
  • 顺序查找表的0号单元留空 性能好一倍
  • 平均查找长度:
  • 3 / 4 ( n + 1 ) 3/4(n+1) 3/4(n+1)

(二)、原理

  1. 从表中最后一个数据项开始,从后往前。
  2. 比较表中数据项的关键字与给定的关键字。
  3. 若到第一个数据项都匹配不成功,则查找失败。

(三)、算法

  1. 把给定的 key 赋值给 0号单元。——“哨兵”
  2. 从最后一个往前。
  3. 找不到时,返回0(0号单元位置)。

(四)、代码

	/**
	 * 顺序查找
	 * 
	 * @param key
	 * @return key相对应的值
	 */
	public String sequentialSearch(int key) {
   
		// TODO
		searchTable[0].key = key; // "哨兵"
		int i;
		for (i = length - 1; searchTable[i].key != key; i--)
			;
		return searchTable[i].value;
	}

二、折半查找

(一)、定义

  • Binary Search,函数命名:binarySearch;
  • 三个位置:low, mid, high
  • 平均查找长度:
  • l o g 二 为 底 , n + 1 为 指 , 再 减 一 log二为底,n+1为指,再减一 logn+1
  • 具体原理看代码。

(二)、代码

	/**
	 * 折半查找
	 * 
	 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜满月

鼓励,鼓励,更加努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值