活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
CSDN—21天学习挑战赛—【经典算法】
学习专栏地址
学习计划
1,学习目标
经典算法的基础学习,以及数据结构入门级学习
**
学习日记
**
1,学习知识点
3,学习的收获
-
线性表
:是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串等 -
线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外。
-
顺序表
:顺序表是用一段连续内存依次存储数据元素的线性结构,一般情况下采用数组存储。顺序表是常见的线性表 -
顺序查找概念:
:从数据对象的一端开始,依次将值和待查找的值进行比较,相等则为查找成功;反之,所有数据中都不存在待查找的值则为查找失败。
-
算法的时间复杂度为O(n)
-
数据的逻辑位置 = 数据的索引位置 +1
4,实操
C语言实现
public class SequentialSearch {
public static void main(String[] args) {
// input data
int[] a = {11,34,20,10,12,35,41,32,43,14};
int key = 41;
// 调用算法,并输出结果
int result = search(a, key);
System.out.println(result);
}
private static int search(int[] a,int key) {
// 初始化变量
int i = 0;
// 使用循环遍历整个数组
while (i < a.length){
// 将集合中的元素与key进行比较
if (a[i] == key){
// 找到目标元素,提前返回
return i + 1;
}
// 每次索引下标后移
i++;
}
// 循环结束还未触发内部的return则代表未找到,此时返回-1
return -1;
}
}
可运行代码中设置了一个名为 a 的顺序表(模仿),例如在查找表为{11,34,20,10,12,35,41,32,43,14}找到关键字为 41 的数据元素的位置,则运行效果为:
输入表中的数据元素:
11,34,20,10,12,35,41,32,43,14
请输入查找数据的关键字:
41
数据在查找表中的位置为:
索引值:6
逻辑值:6+1 = 7
运行逻辑:
- 假设从元素 11 开始向右逐个查找。显然,元素 11 不是要找的目标元素:
- 继续查看表中的下一个元素 34,也不是要找的目标元素:
- 采用同样的方法,逐个查看表中的各个元素是否为目标元素,直到找到 值为41 的数据