Python数据结构(查找)
最近好多天都没有更新,主要是在学习Python数据结构,哎,一言难尽,大一C语言数据结构没有好好学,导致现在几乎从头开始,学习算法的话,希望大家一定好好掌握python语言基础,没有基础的话,可能学习很困难,然后后面的话有很多算法,希望大家不仅仅是理解,更多是完全掌握,这样才能在以后的面试考试中对自己学的代码架构理解程度更高。
补充一点,我在学习数据结构时,又在前面的Python笔记中加了很多笔记,但是因为记录的比较乱,后面我会整理一下发出去,但是具体的时间待定,毕竟补充的也很少,哪里不懂直接私信我就好了。
2. 查找
-
在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程
-
列表查找(线性表查找):从了中查找指定元素
-
输入:列表、待查找元素
-
输出:元素下标(未找到元素时一般返回None或者-1)
-
-
内置列表查找函数: index( )
2.1 顺序查找(Linear Search)
-
顺序查找也叫线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或者搜索到列表最后一个元素为止。
-
时间复杂度 : O(n)
def linear_search(li,val): # li = 列表;val = 待查找的值
for ind, v in enumerate(li): # enumerate 用于遍历索引和值
if v == val:
return ind
pass
else:
return None
li = [1,2,3,4,5,6,7,8,9]
print(linear_search,5)
2.2 二分部查找(折半查找)
-
二分查找:又叫折半查找,从有序列表的初始候选区 li[O:n] 开始,通过对待查找的值与候选区中间值的比较,可以使候选去减少一半。
-
时间复杂度: O(logn)
def binary_search(li,val): # li = 列表 val = 带查找的值
left = 0
right = len(li) - 1
while left <= right: # 候选区有值
mid = (left + right) // 2
if li[mid] == val:
return mid
pass
elif li[mid] > val: # 待查找的值在mid左侧
right = mid -1
pass
elif li[mid] < val: # 待查找的值在mid右侧
left = mid + 1
pass
pass
else:
return None
pass
li = [1,2,3,4,5,6,7,8,9] # 传入0-9的值,
print(binary_search,3) # 调用函数,查找3
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
二维码