python实现–顺序查找
python实现–折半查找
python实现–分块查找
python实现B/B+树
顺序查找(Sequential Search),也称线性查找,是一种简单直观的查找算法。它的基本思想是逐个遍历数据集合中的元素,直到找到目标元素或者遍历完整个数据集合。顺序查找适用于无序数据集合,时间复杂度为O(n),其中n为数据集合中的元素个数。
线性表的顺序查找
数据集合无序:在线性表的顺序查找中,数据集合是无序的,即元素的排列顺序是随机的。
遍历搜索:通过逐个遍历数据集合中的元素,逐个比较目标元素与当前元素是否相等,直到找到目标元素或者遍历完整个数据集合。
从数据集合的第一个元素开始逐个遍历,直到找到目标元素或者遍历完整个数据集合。
在遍历过程中,逐个比较当前元素与目标元素是否相等。
如果找到了目标元素,返回该元素的位置(索引);如果遍历完整个数据集合仍未找到目标元素,返回未找到的标记
def sequential_search(arr, target):"""顺序查找Parameters:arr (list): 待查找的数据集合(数组)target: 目标元素Returns:int: 如果找到目标元素,返回其在数组中的索引;如果未找到,返回-1。"""for i in range(len(arr)):if arr[i] == target:return ireturn -1# 测试
arr = [5, 3, 8, 2, 7, 1, 4]
target = 7
index = sequential_search(arr, target)
if index != -1:print(f"目标元素 {target} 在数组中的索引为:{index}")
else:print(f"未找到目标元素 {target}")
在这段代码中,sequential_search 函数接受一个数组 arr 和目标元素 target,并返回目标元素在数组中的索引(如果找到)或者-1(如果未找到)。函数通过遍历数组中的元素,逐个比较是否等于目标元素,直到找到目标元素或者遍历完整个数组。
有序表的顺序查找
数据集合有序:在有序表的顺序查找中,数据集合是有序的,即元素的排列顺序是按照某种规则排列的(例如升序或者降序)。
利用有序性:由于数据集合有序,可以利用这一特点进行查找。在遍历搜索过程中,可以根据目标元素与当前元素的大小关系,适当地缩小查找范围,提高查找效率。
优化搜索:例如,在升序排列的有序表中查找目标元素,如果当前元素大于目标元素,则可以提前终止搜索,因为后面的元素都比目标元素大。
对于有序表,数据是有序的,我们可以利用这一特点在查找过程中进行优化。如果当前元素大于目标元素,那么说明目标元素不在当前位置的右边;如果当前元素小于目标元素,那么说明目标元素不在当前位置的左边。因此,在有序表的顺序查找中,我们可以提前终止查找,从而提高效率。
def ordered_linear_search(arr, target):for i in range(len(arr)):if arr[i] == target:return i # 如果找到目标元素,则返回索引elif arr[i] > target:return -1 # 如果当前元素大于目标元素,说明目标元素不存在return -1 # 如果遍历完整个数组仍未找到目标元素,则返回-1# 测试
arr = [1, 2, 3, 4, 5, 7, 8]
target = 7
index = ordered_linear_search(arr, target)
if index != -1:print(f"目标元素 {target} 在数组中的索引为:{index}")
else:print(f"未找到目标元素 {target}")
总结:
线性表的顺序查找适用于数据集合无序的情况,其时间复杂度为O(n),其中n为数据集合中的元素个数。而有序表的顺序查找利用了数据集合有序的特点,在一定程度上提高了查找效率,但其时间复杂度仍为O(n)。因此,在实际应用中,如果数据集合是有序的,可以考虑使用更高效的查找算法,例如二分查找。