小编分享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

相关推荐

  • 如何不使用递归实现文件夹的遍历?

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

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

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

    2024年7月12日
    00
  • 聊聊abap上传附件。

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

    2024年6月19日
    04
  • 我来教你php中else是什么意思,Php是什么意思。

    在PHP编程语言中,else是一个关键字,用于控制程序的流程,它通常与if语句一起使用,表示如果if条件不满足(即为假),则执行else后面的代码块,else语句可以单独使用,也可以与elseif(即else if)一起使用,以处理多个…

    2024年7月7日
    05
  • (实用篇)php无限遍历目录

    使用的函数有: isset()判断某个变量是否定义 chdir() 将当前目录改变为指定的目录。 opendir() 打开目录。 readdir()读取目录。 getcwd()。获取当前目录。 还用到了for  if  GET传值 大概就这些: 下面是…

    2016年10月24日
    0297
  • 我来教你python中字典键和值。

    Python字典(dictionary)是一种可变的、无序的、键值对(key-value pair)集合,字典中的键必须是唯一的,而值可以是任意类型的数据(如字符串、数字、列表、元组等),字典的主要用途是通过键快速查找对应的值。 …

    2024年7月25日
    02
  • ajax循环遍历。

    在Web开发中,Ajax是一种非常常用的技术,它可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容,这种技术在提高用户体验和减少服务器负载方面具有重要作用,如何使用Ajax循环输出HTML标签呢?…

    2024年6月24日
    02
  • 说说python循环倒序。

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

    2024年7月11日
    01

联系我们

QQ:951076433

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