博客
关于我
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/

你可能感兴趣的文章
python | xlwings,一个非常实用的 Excel 相关的 Python 库!
查看>>
python读取含中文的json
查看>>
python | 提升代码迭代速度的Python重载方法
查看>>
Python | 爬虫实战——亚马逊搜索页监控(附详细源码)
查看>>
python | 高效使用Python工具自动生成模块文档的秘诀
查看>>
python 一个list去除另一个list中的值
查看>>
python 三大框架的 介绍。
查看>>
Python 下载的 11 种姿势,一种比一种高级!
查看>>
Python 中 3 个不可思议的返回功能
查看>>
python 中 dict 的另一种用法
查看>>
Python 中 PIL 读取图片出现异常旋转的解决方法
查看>>
Python 中只有一个 True 和一个 False 对象吗?
查看>>
Python 中多线程与多处理之间的区别
查看>>
Python 中如何使用 lambda 函数
查看>>
Python 中如何创建多行字符串?
查看>>
Python 中如何处理异常?
查看>>
Python 之匿名函数和偏函数
查看>>
python 之栈的实现
查看>>
Python 交互式数据可视化详解
查看>>
python语言有哪些优点和缺点_Python有哪些优缺点,你了解吗?
查看>>