作者简介:
🍀姓姜,字君竹。
🍁浅薄观点:科以载文,文以载道
🌱软件技术升计科,计划考研
🌾要有最朴素的生活和最遥远的梦想,即使明日,天寒地冻,路遥马亡
1.概念及介绍
顺序查找又称线性查找,主要用于在线性表中进行查找。顺序查找通常分为对一般的无序线性表的顺序查找和对按关键字有序的顺序表的顺序查找。顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法。
作为一种最直观的查找方法, 其基本思想是从线性表的一端开始,逐个检查关键字是否满足给定的条件。若查找到某个元素的关键字满足给定条件,则查找成功,返回该元素在线性表中的位置;若已经查找到表的另一端,但还没有查找到符合给定条件的元素,则返回查找失败的信息。
2.时间空间复杂度
最坏的情况就是完整的遍历了整个集合,也并未找到目标的key,此时循环被完整的执行,循环执行次数与n相关,所以时间复杂度为O(n);
最好的情况就是第一次就找到了元素,此时的时间复杂度为常数级O(1);
综合两种情况,顺序查找的时间复杂度为O(n),属于查找较慢的算法。
由于算法不会改变原有的元素集合,只需要一个额外的变量控制索引变化,所以空间复杂度为常数级:O(1)。
3.图解
- 代码实现
int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,0 }; int key = 7; int sz = sizeof(arr) / sizeof(arr[0]); int i = 0; for (i = 0; i < sz; i++) { if (arr[i] == key) { printf("这个数在数组中的下标是%d", i); break; } } if (i == sz) { printf("数组里没有这个数"); } return 0; }
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。