Python 语言实现六大查找算法

yizhihongxing

下面是关于“Python语言实现六大查找算法”的完整攻略。

1. 六大查找算法

六大查找算法是指顺序查找、二分查找、插值查找、斐波那契查找、树表查找和哈希查找这六种常用的查找算法。这些算法是计算机科学中最基本的算法之一,也是Python开发者必须掌握的算法之一。

2. 算法实现

下面是使用Python实现六大查找算法的完整代码。

2.1 顺序查找

def sequential_search(arr, x):
    for i in range(len(arr)):
        if arr[i] == x:
            return i
    return -1

2.2 二分查找

def binary_search(arr, x):
    low, high = 0, len(arr) - 1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] < x:
            low = mid + 1
        elif arr[mid] > x:
            high = mid - 1
        else:
            return mid
    return -1

2.3 插值查找

def interpolation_search(arr, x):
    low, high = 0, len(arr) - 1
    while low <= high and x >= arr[low] and x <= arr[high]:
        pos = low + int(((float(high - low) / (arr[high] - arr[low])) * (x - arr[low])))
        if arr[pos] == x:
            return pos
        if arr[pos] < x:
            low = pos + 1
        else:
            high = pos - 1
    return -1

2.4 斐波那契查找

def fibonacci_search(arr, x):
    fib2, fib1 = 0, 1
    while fib1 < len(arr):
        fib2, fib1 = fib1, fib2 + fib1
    offset = -1
    while fib1 > 1:
        i = min(offset + fib2, len(arr) - 1)
        if arr[i] < x:
            fib1, fib2 = fib2, fib1 - fib2
            offset = i
        elif arr[i] > x:
            fib1, fib2 = fib - fib2, fib2
        else:
            return i
    if fib1 == 1 and arr[offset + 1] == x:
        return offset + 1
    return -1

2.5 树表查找

class Node:
    def __init__(self, val=None):
        self.left = None
        self.right = None
        self.val = val

def tree_search(root, x):
    if not root:
        return None
    if root.val == x:
        return root
    elif root.val > x:
        return tree_search(root.left, x)
    else:
        return tree_search(root.right, x)

2.6 哈希查找

class HashTable:
    def __init__(self):
        self.size = 10
        self.table = [[] for _ in range(self.size)]

    def hash_func(self, x):
        return x % self.size

    def insert(self, x):
        hash_val = self.hash_func(x)
        self.table[hash_val].append(x)

    def search(self, x):
        hash_val = self.hash_func(x)
        if x in self.table[hash_val]:
            return True
        else:
            return False

3. 示例

下面是两个查找算法的示例,分别展示了二分查找和哈希查找的实现。

3.1 二分查找示例

arr = [2, 3, 4, 10, 40]
x = 10
result = binary_search(arr, x)
if result != -1:
    print("Element is present at index", str(result))
else:
    print("Element is not present in array")

输出:

Element is present at index 3

3.2 哈希查找示例

hash_table = HashTable()
hash_table.insert(5)
hash_table.insert(10)
hash_table.insert(15)
print(hash_table.search(10))
print(hash_table.search(20))

输出:

True
False

4. 总结

六大查找算法是计算机科学中最基本的算法之一,也是Python开发者必须掌握的算法之一。在Python中,我们可以使用各种数据结构和算法来实现这些基本算法。在实际应用中,我们可以根据具体问题选择适当的算法来进行开发和实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 语言实现六大查找算法 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • django python 获取当天日期的方法

    获取当天日期是Web开发中常用的操作之一,Python的Django框架也提供了多个方法来获取当天的日期。以下是详细讲解如何在Django中获取当天日期的方法: 使用Python标准库获取当天日期 Python标准库中有datetime模块可以用于获取当前日期和时间。在Django中可以使用datetime模块获取当天日期的方法如下: import date…

    python 2023年6月2日
    00
  • python 脚本生成随机 字母 + 数字密码功能

    下面是 Python 脚本生成随机字母和数字密码的完整攻略。 步骤一:获取用户输入 首先,我们需要获取用户输入的密码长度 n,通常密码长度为 6 ~ 12 个字符,你可以设置默认值,当用户不输入长度时就使用默认值。 示例代码: import random # 提示用户输入密码长度,如果用户不输入则使用默认值 8 n = input("请输入要生成的…

    python 2023年6月3日
    00
  • 在Python中操作文件之seek()方法的使用教程

    在Python中操作文件之seek()方法的使用教程 在Python中,我们可以使用open()函数打开文件,并进行文件操作。其中,seek()方法用于改变文件读写位置。 语法格式 file.seek(offset[, whence]) 参数说明 offset:表示要移动的字节数,可以为负数。 whence:表示移动方式,可选参数,表示从哪个位置开始偏移。 …

    python 2023年6月3日
    00
  • python游戏的魅力之冒险岛实战项目

    Python游戏的魅力之冒险岛实战项目攻略 1. 概述 冒险岛是一款非常受欢迎的在线多人角色扮演游戏,而我们可以使用Python来构建自己的冒险岛实战项目。在这个项目中,我们将使用Python的pygame库来构建一个精灵动作的游戏,玩家需要控制主角进行冒险和战斗。 2. 基本框架 我们可以使用pygame库来构建游戏的基本框架,具体如下: import p…

    python 2023年6月3日
    00
  • python对excel文档去重及求和的实例

    下面是“Python对Excel文档去重及求和的实例”的完整实例教程。 目录 准备工作 去重实例 求和实例 总结 准备工作 在开始代码之前,我们需要安装pandas和openpyxl模块,pandas用于数据操作,openpyxl用于读写Excel文件。可以使用以下命令来安装: pip install pandas openpyxl 去重实例 在此实例中,我…

    python 2023年5月13日
    00
  • 什么是Python闭包?闭包有什么作用?

    在Python中,闭包(Closure)是指一种函数,它可以访问在其定义范围内的变量,并把该函数作为返回值返回。闭包允许你在一个函数中嵌套另一个函数,并且在内部函数中引用外部函数的变量。 在Python中,如果一个函数定义在另一个函数内部,而内部函数使用了外部函数的变量,则称这个内部函数为闭包。闭包是Python中一种强大的编程技巧,它可以让函数保留状态,并…

    2023年2月21日
    10
  • Python实现文件及文件夹操作大全

    Python实现文件及文件夹操作大全 1. 文件操作 1.1 打开文件 Python使用内置函数open()打开文件,并返回文件对象。语法如下: f = open(file_path, mode) 其中,file_path表示文件的路径,可以是相对路径或绝对路径;mode表示打开文件的模式,常用模式如下: r:只读模式,打开文件后只能读取,不能写入,默认模式…

    python 2023年6月2日
    00
  • Python GUI之tkinter窗口视窗教程大集合(推荐)

    这里给出一份对“PythonGUI之tkinter窗口视窗教程大集合(推荐)”文章的详细讲解,希望对你能有帮助。 1. 简介 本文主要介绍如何使用 Python 的图形用户界面库 tkinter 来创建窗口视窗。tkinter 是 Python 语言自带的标准 GUI 库,使用它可以快速实现一个简单的窗口程序。本文着重介绍 tkinker 的基本用法,包括窗…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部