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
分享
二维码
< <上一篇
下一篇>>