【Algorithm】01_查找

1 顺序查找

  • 原理:对列表中的每一个元素和待查找元素进行一一比对。
  • 时间复杂度:O (N)
1	def LinearSearch(list, tar):
2	    for i in range(len(list)):
3	        if list[i] == tar:
4	            return i
5	    return -1

  

 

2 二分查找

  • 原理:对列表中的元素进行排序,将开始指针指向列表头、结束指针指向列表尾,比对中间元素与待查找元素,更新开始或结尾指针,重复“比对-更新”过程,直到开始指针大于结束指针。
  • 时间复杂度:O (logN)
1	def BinarySearch(lis, tar): # lis必须升序排列
2	    start = 0
3	    end = len(lis) - 1
4	    while start <= end:
5	        mid = (start + end) // 2
6	        if lis[mid] == tar:
7	            return mid
8	        elif lis[mid] > tar:
9	            end = mid - 1
10	        else:
11	            start = mid + 1
12	    return -1
  • 注意点:

①    列表必须是有序的。

②    第4行start和end的关系必须是“小于等于”。

 

posted @ 2021-04-14 10:48  rbcl  阅读(65)  评论(0)    收藏  举报