活动地址:CSDN21天学习挑战赛
顺序查找
什么是顺序查找呢?顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法。简单来说,就是给定一个数值,然后在给定的序列中按顺序依次与给定值比较,若相等则查找成功,反之失败!
实现思路
顺序查找就是遍历给定的整个序列,逐个元素与给定值比较,若某个元素和给定值相等,则查找成功。如果直到最后一个元素和给定值比较都不相等,则查找失败。
代码实现
题目描述:给定一个整数数组 nums 和一个整数目标值 target ,请在数组中找到 target ,并返回其下标。
public class SequentialSearch {
public static void main(String[] args) {
int[] nums = {
12,15,54,85,25,64,54};
Scanner sc = new Scanner(System.in);
System.out.println("输入要查找的数据:");
int target = sc.nextInt();
int i = search(nums, target);
if(i != -1){
System.out.println("查找成功,该元素的下标为" + i);
}else{
System.out.println("查找失败!");
}
}
/**
* 顺序查找
* @param array
* @param key
* @return
*/
static int search(int[] array,int key){
for (int i = 0;i < array.length;i++){
if (array[i] == key){
return i;
}
}
return -1;
}
}
算法分析
时间复杂度分析
使用顺序查找在含有 n 个数据的序列中查找目标值,最理想的状态是目标值位于序列第一位,只需比较一次就找到目标值,此时的时间复杂度为O(1);而最差的情况就是需要比较 n 次,也就是比较完序列中所有的数据,才找到目标值或者说不存在目标值,此时的时间复杂度为O(n)。
查找失败时,需要比较 n + 1 次, 时间复杂度我们都会将结果去掉常数项,所以该算法的时间复杂度为O(n)。
空间复杂度分析
扫描二维码关注公众号,回复:
14429276 查看本文章
顺序查找是对序列顺序的比较,没有额外的空间,所以空间复杂度为O(1)。
优缺点分析
优点:算法简单,对表结构无任何要求,既适用于顺序结构,也适用于链式结构。
缺点:平均查找次数较多,查找效率低,所以当n很大时,不建议使用顺序查找。
写在最后
学习算法,不仅能让自己思维能力更上一个台阶,也能为自己打下坚实的基础,成为IT行业的高端人才,而不是一直停留在低水平的体力编程层次。