活动地址:CSDN21天学习挑战赛
1.基本概念
1.为什么要有算法
- 算法就是计算过程。它将数据输入并经过一系列计算过程产生数据然后输出。
- 计算过程可以有很多种解法,但好的算法可以大幅度提高程序的运行效率。
2.数据结构
- 算法经常与数据结构一起出现,因为对于不同的数据结构,如数组,集合,链表,树…等。
- 数据结构的不同对应的算法也不相同,所以我们学习算法也需要了解数据结构的使用。
2.顺序查找
-
输入
在长度为N的序列中,查找Key值是否存在 -
输出
查找成功:输出元素位置
查找失败 :返回-1 -
算法说明
顺序查找是直接按照序列的长度,从头开始一个一个的比对查找,直到找到元素或到序列末尾。 -
算法的优弊端
简单直接,对于被查找的序列没有排序的限制
平均查找长度过高,效率太低
程序实现
public static void main(String[] args) {
int[] nums = [1,42,42,41,47,32];
int key = 41;
//循环遍历数据
for(int i =0;i<nums.length;i++){
//判断数组下标为i的值是否为key
if(nums[i] == key){
//找到返回数组下标
System.out.println(i);
return 0;
}
}
//没有找到 返回-1
System.out.println(-1);
}
3.时间复杂度
最好的情况:只循环了一次,就找到了元素 时间复杂度o(1)
最坏的情况:遍历完整个序列,没有找到元素,此时循环被完整执行,时间复杂度o(n)
4.空间复杂度
使用了一个临时变量i 所以空间复杂度为o(1)
#4 使用场景
在序列较小的情况下推荐使用,且顺序查找无需在意排序情况。