Python编程二分法实现冒泡算法+快速排序代码示例

Python编程二分法实现冒泡算法+快速排序代码示例

本文将详细介绍如何使用Python编程实现二分法、冒泡算法和速排序算法,并提供两个示例说明。

二分法

二分法是一种常用的查找算法,它的基本想是将有序数组分成两部分,然后判断目标值在哪一部分中,从而缩小查找范围。下面是使用Python实现二分法的代码示例:

def binary_search(arr, target):
    left, right = 0, len(arr) - 1
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] ==:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

在这个示例,定义了一个binary_search,它接受一个有序数组arr和一个目标值target作为参数。我们使用leftright两个指针来表示数组的左右边界,然后循环中计算中间位置mid。如果arr]等于目标值target,则返回mid。如果arr[mid]小于目标值target,则将左指针left移动到mid + 1的位置。如果arr[mid]大于目标值target,则将右指针right移动到mid - 1的位置。如果没有找到目标值,则返回-1。

示例1:使用二分法查找元素

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5
result = binary_search(arr, target)
print(result)

在这个示例中,我们使用二分法查找有序数组arr中元素5。我们调用binary_search函数,并将arrtarget作为参数传递给它。最后,我们打印查找结果。

冒泡算法

冒泡算法是一种简单的排序算法,它的基本思想是比较相邻的元素,如果它们的顺序错误就交换它们。下面是使用Python实现冒泡算法的代码示例:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr

在这个示例中,我们定义了一个bubble_sort函数,它接一个数组arr作为参数。我们使用两个嵌套的循环来遍历数组,并比较相邻的元素。如果它们的顺序错误,就交换它们。最后,我们返回排序后的数组。

示例2:使用冒算法对数组进行排序

arr = [5, 3, 8, 6, 7, 2]
result = bubble_sort(arr)
print(result)

在这个示例中,我们使用冒泡算法对数组arr进行排序。我们调用bubble_sort函数,并将arr作为参数传递给它。最后,我们打印排序后的数组。

快速排序

快速排序是一种常用的排序算法,它的基本思想是选择一个基准元素,将数组分成两部分,一部分小于基准元素,一部分于基准元素,然后递归地对两部分进行排序。下面是使用Python实现快速排序的代码示例:

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)

在这个示例中,我们定义了一个quick_sort函数,它接受一个数组arr作为参数。如果数组的长度小于等于1,则返回数组。我们选择中间位置的元素作为基准元素pivot,然后使用列表推导式将数组分成三部分:小于基准元素的部分left、等于基准元素的部分middle和大于基准元素的部分right。最后,我们递归地对leftright进行排序,并将它们与middle合并。

示例3:使用快速排序对数组进行排序

arr = [5, 3, 8, 6, 7, 2]
result = quick_sort(arr)
print(result)

在这个示例中,我们使用快速排序对数组arr进行排序。我们调用quick_sort函数,并将arr作为参数传递给它。最后,我们打印排序后的数组。

以上是使用Python编程实现二分法、冒泡算法和快速排序算法的完整攻略,包括实现和示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python编程二分法实现冒泡算法+快速排序代码示例 - Python技术站

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

相关文章

  • python 通过dict(zip)和{}的方式构造字典的方法

    Python提供了多种方式构造字典,其中通过dict()函数和{}语法糖的方式最常用。本文将详细讲解这两种方式构造字典的方法。 通过dict()函数构造字典 dict()函数可以将任意可迭代的对象转换为字典。其中,可迭代的对象可以是列表、元组或其他序列类型,每个元素必须包含两个值,第一个值表示字典的键,第二个值表示字典的值。 下面是一个示例,通过dict()…

    python 2023年5月13日
    00
  • 关于Python内存分配时的小秘密分享

    关于Python内存分配时的小秘密分享 在Python编程中,内存管理是一个非常重要的主题。Python内存分配的原理和机制对于程序员而言非常重要。在本文中,我们将探讨Python的内存分配机制,并分享一些小秘密。 Python内存管理机制 Python使用自动内存管理机制,也就是自动垃圾回收机制。在Python程序中,当一个对象不再被程序引用时,就会自动被…

    python 2023年5月14日
    00
  • 使用llama Index帮你训练pdf的示例详解

    关于“使用llama Index帮你训练pdf的示例详解”的攻略,可以按照以下步骤: 1. 安装llama Index 首先需要安装llama Index,这是一个开源的工具库,可以让用户更加方便快捷地访问和处理PDF文档。可以通过以下命令进行安装: pip3 install llama_index 2. 准备PDF文档并生成索引 接下来,可以准备一份PDF…

    python 2023年6月2日
    00
  • IndexError:运行python 3.9.1时元组索引超出范围

    【问题标题】:IndexError: tuple index out of range when running python 3.9.1IndexError:运行python 3.9.1时元组索引超出范围 【发布时间】:2023-04-05 05:16:02 【问题描述】: 运行我的代码时出错 dataset_total = pd.concat((data…

    Python开发 2023年4月5日
    00
  • python实现高斯模糊及原理详解

    Python实现高斯模糊及原理详解 高斯模糊是一种常用的图像处理技术,它可以使图像变得更加平滑,减少噪点和细节。在本文中,我们将介绍高斯模糊的原理,并提供Python实现高斯模糊的代码。 高斯模糊的原理 高斯模糊的原理是基于高斯函数的卷积运算。高斯函数是一种钟形曲线,它可以用来描述一组数据的分布情况。在图像处理中,我们可以将高斯函数应用于图像的像素值,从而实…

    python 2023年5月14日
    00
  • Python Splinter单击表条件中的链接

    【问题标题】:Python Splinter Click Link in Table ConditionalPython Splinter单击表条件中的链接 【发布时间】:2023-04-06 15:21:01 【问题描述】: 鉴于此(“睡眠”方法是为了让您可以看到我在看什么): from splinter import Browser import tim…

    Python开发 2023年4月7日
    00
  • Python中re模块的常用方法总结

    Python中的re模块是一个用于处理正则表达式的模块,它提供了一系列函数来操作字符串。在本文中,我们将总结Python中re模块的常用方法。 re.match() re.match()函数用于从字符串的开头匹配正则表达式。如果字符串的开头与正则表达式匹配,则返回一个匹配对象;否则返回None。 以下是一个示例: import re string = &qu…

    python 2023年5月14日
    00
  • python 协程并发数控制

    Python协程并发数控制攻略 本攻略将介绍如何使用Python协程并发数控制。我们将使用asyncio库来创建协程,使用Semaphore类来控制并发数。 创建协程 在开始之前,我们需要了解如何使用asyncio库创建协程。以下是一个示例代码,用于创建一个简单的协程: import asyncio async def my_coroutine(): pri…

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