python查找与排序算法详解(示图+代码)

yizhihongxing

下面是关于“Python查找与排序算法详解”的完整攻略。

1. 查找算法

1.1 线性查找算法

线性查找算法是一种简单的查找算法,它的基本思想是从数据集合的第一个元素开始逐个比较,直到找到目标元素或遍完整个数据集合。在Python中,我们可以使用线性查找算法来查找任意数据类型的元素。

下面使用Python实现性查算法:

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

在这个代码中,我们定义了_search()函数来实现线性查算法。我们首先遍历整个数组,逐个比较元素是否等于目标元素。如果找到目标元素,则返回元素的下标。如果未找到目标元素,则返回-1。

下面是一个使用性查找算法的示例:

arr = [1, 3, 5, 7, 9]
target = 5
result = linear(arr, target)
if result != -1:
    print("Element is present at index", result)
else:
    print("Element is not present in array")

输出:

Element is at index 2

在这个示例中,我们定义了一个包含5个元素的数组,并使用linear_search()函数查找目标元素5。最终目标元素的下。

1.2 二分查找算法

二分查找算法是一种高效的查找算法,它的基本思想将数据集合分成两份,然后递归地在其中一部分查找目标元素。在Python中,我们可以使用二分查找算法来查找有序数组中的元素。

下面使用Python实现二分查找算法:

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

在这个代码中,我们定义了binary_search()函数来实现二分查找算法。我们首先将数据合的左右边界分别设置为0和数组长度减1。然后在每次环中,我们计算中间元素下标,并将其与目标元素进行比较。如果中间元素等于目标元素,则返回间元素的下标。如果中间元素小于目标元素,则将左边界动到中间元素的右一位。如果中间元素大于目标元素,则将右边界移动到中间元素的左边一位。最终如果未找目标元素,则返回-1。

下面是一个使用二分查找算法的示例:

arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target)
if result != -1:
    print("Element is present at index", result)
else:
    print("Element is not present in array")

输出:

Element is present at index 2

在这个示例中,我们定义了一个包含5个元素的数组,并使用binary_search()函数查找目标元素5。最终输出目标元素的下标。

2. 排序算法

2.1 冒泡排序算法

冒泡排序算法是一种简单的排序算法,它的基本思想是从数据集合的第一个元素开始逐个比较,前一个元素大于后一个元素,则交换它们的位置。在Python中,我们可以使用冒泡排序算法来对任意数据类型的素进行排序。

下面使用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]

在这个代码中,我们定义了bubble_sort()函数来实现冒泡排序算法。我们首先定义数组的长度n,然后使用两个嵌循环来遍历整个。在内层循环中,我们比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置。

下面是一个使用冒泡排序算法的示例:

arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print("Sorted array is:", arr)

输出:

`
Sorted array is: [11, 12, 22, 25, 34, 64, 90]


在这个示例中,我们定义了一个包含7个元素的数组,并使用`bubble_sort()`函数对其进行排序。最终输出排序后的数组。

### 2.2 快速排序算法

快速排序算法是一种高效的排序算法,它的基本思想是选择一个基准元素,然后将数组分成两部分,一部分小于基准元素,一部分大于基准元素。然后递归地对两部分进行排序。在Python中,我们可以使用快速排序算法来对任意数据类型的元素进行排序。

下面使用Python实现快速排序算法:

```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()函数来实现快速排序法。我们首先判断数组的长度是否小于等于1,如果是,则直返回数组。否则,我们选择一个基准元素pivot,然后将数组分成三部分:小于基准元素的部分、等于基准元素的部分和大于基准元素的部分。然后递归地对小和大于基准元素的部进行排序,最终将三部分合并起来。

下面是一个使用快速排序算法的示例:

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = quick_sort(arr)
print("Sorted array is:", sorted_arr)

输出:

Sorted array is: [11, 12, 22, 25, 34, 64, 90]

在这个示例中,我们定义了一个包含7个元素的数组,并使用quick_sort()函数对其进行排序。最终输出排序后的数组。

3. 总结

Python查找与排序算法的实现包括线性查算法、二分查找算法、冒泡排序算法和快速排序算法等。这些算法都是计算机科学中最基本的算法之一,也是Python开发者须掌握的算法之一。在实际应用中,我们根据具体问题选择适当算法来进行发和实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python查找与排序算法详解(示图+代码) - Python技术站

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

相关文章

  • Python随机函数random()使用方法小结

    Python随机函数random()使用方法小结 介绍 在Python中,random模块提供了很多用于生成随机数的函数,其中最常用的就是random()函数。该函数可以生成一个在0到1之间的随机浮点数。 本文将详细介绍如何使用random()函数,以及其他一些相关的函数。 使用方法 步骤1:导入random模块 在代码中引用random模块: import…

    python 2023年6月3日
    00
  • Python实现字典序列ChainMap

    Python的ChainMap类是一个非常有用的数据结构,可以让多个字典按照顺序合并成为一个字典,可以在这个新字典中进行键值查找和修改操作。简单来说,ChainMap会按照顺序查找多个字典,并返回最先找到的键值对。 具体步骤如下: 导入ChainMap类 from collections import ChainMap 创建多个字典 dict_1 = {‘a…

    python 2023年5月13日
    00
  • Python数据类型详解(三)元祖:tuple

    Python数据类型详解(三)元组:tuple 什么是元组? 元组(tuple)与列表类似,也是一种序列,但是元组是不可变的(immutable),即一旦创建后就不能再被修改。元组可以包含多个不同类型的元素,被包含的元素之间以逗号分隔,同时还可以使用小括号来包含元素。 如何创建元组? 创建元组的语法与列表类似,使用小括号将元素括起来,并用逗号分隔。例如: m…

    python 2023年5月14日
    00
  • Python之进行URL编码案例讲解

    Python之进行URL编码案例讲解 什么是URL编码? URL编码,又称百分号编码,是一种用来对URL中的特殊字符进行编码的方法。URL中包含各种各样的字符,但是有一些特殊字符不能直接在URL中使用,比如空格、#、?等。这些特殊字符需要经过编码,才能被放入URL中,否则会引起URL解析错误。 如何进行URL编码? Python中可以使用urllib.par…

    python 2023年5月13日
    00
  • 如何使用Python实现数据库中数据的去重?

    以下是使用Python实现数据库中数据去重的完整攻略。 数据库中数据去重简介 在数据库中,数据去重是指删除重复的数据行。在Python中,可以使用pymysql库实现数据库中去重。 步骤1:连接到数据库 在Python中,可以使用pymysql库连接到MySQL数据库。以下是连接到MySQL数据库的基语法: import pymysql db = pymys…

    python 2023年5月12日
    00
  • python中文编码与json中文输出问题详解

    下面为你详细讲解“Python中文编码与JSON中文输出问题详解”的攻略。 简介 在 Python 中使用代码读取或写入中文字符时,经常会碰到编码问题;同样地,在使用 JSON 序列化或反序列化时也容易发现中文输出出现乱码的情况。本篇攻略将会详细介绍这些问题的背景、原因、解决方案以及具体实现方法。 编码问题 编码问题通常是因为字符集的不同而引起的。在 Pyt…

    python 2023年5月31日
    00
  • Python的Matplotlib库图像复现学习

    下面是Python的Matplotlib库图像复现学习的完整攻略: 前言 Matplotlib是Python中用于绘制高质量图形的2D库,它可以帮助我们进行数据可视化和图形绘制。本文将介绍如何通过Matplotlib库学习复现图像。 准备工作 在学习Matplotlib库图像复现前,我们需要准备以下工具和知识: Python环境:Matplotlib库是Py…

    python 2023年6月6日
    00
  • 简单实现python聊天程序

    简单实现Python聊天程序攻略 第一步 – 确定聊天方式 在开始编写Python聊天程序之前,首先需要确立用户之间聊天的方式。可以通过几种不同的方法实现: 使用Sockets – 编写Python程序以通过使用套接字实现两个之间的通信。 使用HTTP – 实现客户端-服务器程序,通过使用HTTP协议处理请求和响应。 使用WebSocket – 使用更复杂的…

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