博客
关于我
Python -- 算法实现
阅读量:804 次
发布时间: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/

你可能感兴趣的文章
python | scikit-llm,一个神奇的 Python 库!
查看>>
python | sentry,一个超酷的 关于错误监控工具 Python 库!
查看>>
python | shiv,一个超酷的 打包工具 Python 库!
查看>>
python | six,一个神奇的 Python 库!
查看>>
Python读取图片的几种方法供net使用
查看>>
python | spacy,一个神奇的 Python 库!
查看>>
python | sqlmap,一个实用的 Python 库!
查看>>
python | sumy,一个超酷的 用于文本摘要的 Python 库!
查看>>
python | tiler,一个不可思议的 图像切片重组 Python 库!
查看>>
python | tinydb,一个非常厉害的 关于数据库的 Python 库!
查看>>
python | tox,一个超强的 自动化测试工具 Python 库!
查看>>
python | ttkbootstrap,一个神奇的 Python 库!
查看>>
python | unoconv,一个超厉害的 Python 库!
查看>>
python | urllib3,一个超强的 Python 库!
查看>>
python | webassets,一个超强的 Python 库!
查看>>
python | werkzeug,一个不可思议的 Python 库!
查看>>
python | xlsxwriter,一个实用的 Python 库!
查看>>
python | xlwings,一个非常实用的 Excel 相关的 Python 库!
查看>>
python | xmltodict,一个非常厉害的 关于XML数据 Python 库!
查看>>
python | xonsh,一个超酷的 Python 库!
查看>>