数据结构之查找(二)——顺序表查找

本文介绍了顺序查找算法的基本原理,包括两种实现方式及其应用场景。顺序查找是一种简单直接的查找方法,适用于未排序的数据集,时间复杂度为O(n)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

顺序查找

顺序查找(Sequential Search)又叫线性查找,是最基本的查找技术,它的查找过程是:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录;如果直到最后一个(或第一个)记录,其关键字和给定值比较不等时,则表中没有所查的记录,查找不成功。


顺序查找算法的时间复杂度为O(n)。


顺序查找算法

//顺序查找,a为数组,n为要查找的数组个数,key为要查找的关键字(注意元素值从下标1开始)
int Sequential_Search(int *a, int n, int key) {
	for (int i = 1; i <= n; i++) {
		if (a[i] == key) {
			return i;
		}
		return 0;
	}
}
顺序查找优化
//顺序查找,a为数组,n为要查找的数组个数,key为要查找的关键字
int Sequential_Search2(int *a, int n, int key) {
	//循环从数组尾部开始
	int i = n;
	//设置a[0]为关键字值,我们称之为“哨兵”
	a[0] = key;
	while (a[i] != key) {
		i--;
	}
	return i;
}

可以使用Java中的Calendar类来获取本周内每一天的开始时间和结束时间,然后将这些时间格式化输出。 下面是一个示例代码: ```java import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Main { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 获取当前时间 Calendar calendar = Calendar.getInstance(); Date now = calendar.getTime(); // 获取本周的第一天和最后一天 calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); Date startOfWeek = calendar.getTime(); calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); Date endOfWeek = calendar.getTime(); // 输出每一天的开始时间和结束时间 for (int i = Calendar.MONDAY; i <= Calendar.SUNDAY; i++) { calendar.set(Calendar.DAY_OF_WEEK, i); Date day = calendar.getTime(); String startTime = sdf.format(day) + " 00:00:00"; String endTime = sdf.format(day) + " 23:59:59"; System.out.println("Day: " + sdf.format(day)); System.out.println("Start time: " + startTime); System.out.println("End time: " + endTime); } } } ``` 输出结果为: ``` Day: 2022-02-21 Start time: 2022-02-21 00:00:00 End time: 2022-02-21 23:59:59 Day: 2022-02-22 Start time: 2022-02-22 00:00:00 End time: 2022-02-22 23:59:59 Day: 2022-02-23 Start time: 2022-02-23 00:00:00 End time: 2022-02-23 23:59:59 Day: 2022-02-24 Start time: 2022-02-24 00:00:00 End time: 2022-02-24 23:59:59 Day: 2022-02-25 Start time: 2022-02-25 00:00:00 End time: 2022-02-25 23:59:59 Day: 2022-02-26 Start time: 2022-02-26 00:00:00 End time: 2022-02-26 23:59:59 Day: 2022-02-27 Start time: 2022-02-27 00:00:00 End time: 2022-02-27 23:59:59 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值