查找就是:在一堆数据中,找到想要找的值,在一堆数据中对应的索引位置
顺序查找简而言之:从头依次找到尾
时间复杂度:O(N)
# coding:utf-8
"""
输入一个列表和一个值
查找这个值在列表中的索引位置,如果在列表中没有找到,则返回-1
"""
def linear(li, value):
for index, v in enumerate(li):
if v == value:
return index
else:
return -1
# 时间复杂度O(N)
if __name__ == "__main__":
list_one = [5, 8, 10, 3, 2, 1]
print(linear(list_one, 88))
折半查找
折半查找也叫二分查找。使用折半查找的前提条件是:已经排好了顺序(从左到右,从小到大)
不断找顺序序列的中间位置值,与待查找元素值进行比较。每次将候选区折半。
时间复杂度:O(logN)
# coding:utf-8
# 时间复杂度是O(logN)
def binary(li, left, right, value):
while left <= right:
mid = (left + right) // 2
if li[mid] == value:
return mid
if li[mid] < value:
left = mid + 1
if li[mid] > value:
right = mid - 1
else:
return -1
# 前提:列表是已经有序的
list_a = [1, 2, 3, 4, 5, 6]
print(binary(list_a, 0, len(list_a) - 1, 8))



