小编分享Python常用算法。

Python常用算法

在计算机科学中,算法是解决问题的一系列步骤,Python作为一门广泛使用的编程语言,有许多常用的算法可以帮助我们解决各种问题,本文将介绍一些Python中常用的算法及其实现。

小编分享Python常用算法。

排序算法

1、冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来,遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

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

2、选择排序

选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

def selection_sort(arr):
    for i in range(len(arr)):
        min_index = i
        for j in range(i+1, len(arr)):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
    return arr

查找算法

1、线性查找

线性查找是一种简单的查找算法,它的基本思想是从数列的第一个元素开始,逐个检查每个元素,直到找到所需的元素为止。

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

2、二分查找

二分查找是一种高效的查找算法,它要求数据必须是有序的,基本思想是将查找的键值与有序数组的中间值进行比较,如果相等则返回中间值的下标,如果小于中间值则在左半部分继续查找,如果大于中间值则在右半部分继续查找,直到找到为止。

小编分享Python常用算法。

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

图算法

1、深度优先搜索(DFS)

深度优先搜索是一种用于遍历或搜索树或图的算法,这个算法会尽可能深地搜索树的分支,当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点,这一过程一直进行到已发现从源节点可达的所有节点为止。

def dfs(graph, start, visited=None):
    if visited is None:
        visited = set()
    visited.add(start)
    for next_node in graph[start] visited:
        dfs(graph, next_node, visited)
    return visited

2、广度优先搜索(BFS)

广度优先搜索是一种用于遍历或搜索树或图的算法,这个算法从根节点开始,沿着树的宽度遍历树的节点,如果所有节点均被访问,则算法终止。

from collections import deque
def bfs(graph, root):
    visited = set()
    queue = deque([root])
    while queue:
        vertex = queue.popleft()
        if vertex not in visited:
            visited.add(vertex)
            queue.extend(neighbor for neighbor in graph[vertex] if neighbor not in visited)
    return visited

相关问题与解答

1、冒泡排序的时间复杂度是多少?

答:冒泡排序的时间复杂度为O(n^2)。

2、二分查找适用于什么样的数据结构?

小编分享Python常用算法。

答:二分查找适用于有序的数据结构,如有序数组。

3、深度优先搜索和广度优先搜索有什么区别?

答:深度优先搜索是尽可能深地搜索树的分支,而广度优先搜索是沿着树的宽度遍历树的节点。

4、选择排序的原理是什么?

答:选择排序的工作原理是在每一轮中选出最小的元素,然后将其放到正确的位置。

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/485933.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
IT工程IT工程订阅用户
上一篇 2024年7月23日 09:04
下一篇 2024年7月23日 09:14

相关推荐

  • 二叉树有几种遍历方式?

    二叉树(Binary Tree) 是一种树形数据结构,其中每个父节点最多可以有两个子节点。 二叉树的每个节点(node)包含三个属性:data 数据、left 左子节点的地址、right 右子节点的地址。满二叉树(Full Binary Tree):每个…

    2023年5月7日 默认文章
    02
  • 说说python循环倒序。

    在Python中,循环倒序是一种常见的编程技巧,它允许我们从列表、字符串或任何可迭代对象的末尾开始遍历,这种技巧在很多情况下都非常有用,比如我们需要从最新的数据开始处理,或者需要反向遍历一个序列。 Python中…

    2024年7月11日
    01
  • 教你全排列 python。

    全排列算法是计算机科学中的一个重要概念,它涉及到如何在一个给定的数据集合中生成所有可能的排列,Python作为一种广泛使用的编程语言,提供了多种实现全排列算法的方法,在本文中,我将介绍两种常见的方法:递归…

    2024年7月27日
    04
  • 聊聊abap上传附件。

    在SAP系统中,附件数据通常存储在ABAP表(例如:ARFCA、ARFDA等)中,要读取这些附件数据,可以使用ABAP代码中的内表和工作区技术,以下是一个简单的示例,展示了如何使用ABAP代码读取SAP的附件数据。 我们需要定义…

    2024年6月19日
    01
  • 我来教你python内置标准库的功能是什么。

    Python的内置标准库包含多个以C编写的模块,这些模块提供了实现系统级功能的关键工具,如文件I/O。还有大量以Python编写的模块,它们为日常编程中的问题提供了标准解决方案。常用的有四个标准库:os、sys、re和rand…

    2024年7月8日
    06
  • 如何不使用递归实现文件夹的遍历?

    大家好,这篇文章为大家介绍一下怎样遍历电脑上的一个文件夹。通常遍历文件夹我们都是使用递归进行操作,这种方式比较简单,也比较容易理解,本文的第一种实现也是使用递归。然后再为大家介绍另一种不使用递归的方…

    2023年5月12日
    05
  • 小编教你python常见算法。

    Python常见算法 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来,遍历数列的工作是重复地进行直到没有再需要交换,也就…

    2024年7月12日
    00
  • 小编教你java数组倒序输出的方法是什么意思。

    Java数组倒序输出的方法是将数组元素的顺序颠倒,即将第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换,以此类推。 在Java中,数组是一种非常重要的数据结构,它可以用来存储多个相同类型的数据,我…

    2024年7月24日
    02

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息