博客
关于我
Python -- 算法实现
阅读量:805 次
发布时间:2023-03-05

本文共 1680 字,大约阅读时间需要 5 分钟。

二分搜索与二叉树排序实例解析

今天,我来分享两个有趣的数据结构与算法实例。第一个是二分搜索的实现,第二个是基于二叉树的排序算法。这些代码示例可以帮助我们更好地理解这两种数据结构的应用。

首先,让我们来看一下二分搜索的实现。下面是一个Python脚本,用于在数组中查找特定值:

def binSearch(arr, value):    low = 0    high = len(arr) - 1    while low <= high:        mid = int((low + high) / 2)        if value > arr[mid]:            low = mid + 1        elif value < arr[mid]:            high = mid - 1        else:            return mid    return -1a = [1, 22, 44, 55, 67]print(binSearch(a, 66))

这个函数通过不断缩小搜索范围来查找目标值。每次迭代都会将搜索区间减半,这使得时间复杂度为O(log n)。例如,当我们调用binSearch(a, 66)时,函数将返回-1,因为66不在数组中。

接下来,我们来看一下基于二叉树的排序算法。以下是一个Python脚本,用于对数组进行排序:

class BTree:    def __init__(self, value):        self.value = value        self.left = None        self.right = None    def insertLeft(self, value):        self.left = BTree(value)        return self.left    def insertRight(self, value):        self.right = BTree(value)        return self.rightdef inOrder(tree):    if tree.left:        inOrder(tree.left)    tree.show()    if tree.right:        inOrder(tree.right)def rInOrder(tree):    if tree.right:        rInOrder(tree.right)    tree.show()    if tree.left:        rInOrder(tree.left)def insert(tree, value):    if value < tree.value:        if tree.left:            insert(tree.left, value)        else:            tree.insertLeft(value)    else:        if tree.right:            insert(tree.right, value)        else:            tree.insertRight(value)arr = [5, 3, 4, 1, 2, 0, 9, 0, 9]Root = BTree(arr[0])for i in arr[1:]:    insert(Root, i)inOrder(Root)

这个代码实现了一个二叉搜索树,并通过递归的方式进行插入和遍历操作。inOrder函数从头到尾遍历树节点,按顺序输出元素值。rInOrder函数则从右向左遍历树节点,同样输出元素值。通过这个例子,我们可以直观地看到二叉树的应用场景。

以上代码实例展示了二分搜索和二叉树排序算法的基本原理和应用。希望这些代码能为您的学习提供帮助。

转载地址:http://vsafk.baihongyu.com/

你可能感兴趣的文章
Python3-selenium自动化测试框架,结合HTMLTestRunner测试报告!
查看>>
Python3-如何自我更新作为服务运行的应用程序
查看>>
Python3.1-网格模拟概念性问题
查看>>
Python3.12 解决conda环境libstdc++版本过低问题
查看>>
python3.2批量查询IP地址区域
查看>>
Python3.5中协程和未来/任务之间的区别?
查看>>
python3.5实现socket通讯(TCP)
查看>>
python3.6 ubuntu部署nginx、 uwsgi、 django
查看>>
Python3.6.3中,functools似乎不能用
查看>>
python3.6.5+cuda9+cudnn7.1+win10+tensorflow-gpu1.9.0下载配置
查看>>
python3.6使用pickle序列化class
查看>>
python3.6入门到高阶(全栈) day027 网络通信协议 osi七层模型
查看>>
Python3.6属性错误:模块‘;异步没有属性‘;运行‘;
查看>>
python3.6版本中的python-weka-wrapper安装失败,错误代码为%1
查看>>
Python3.7安装cv2踩过的坑
查看>>
python写txt文件
查看>>
python关于sorted排序函数详细解析 附实战代码(全)
查看>>
python3.8调用m文件,调用matlab
查看>>
python3.9新特性_Python 3.9 新特性速览
查看>>
Python3.x:遍历select下拉框获取value值
查看>>