python中常用的算法

Python中常用的算法包括但不限于:排序算法、搜索算法、图算法、动态规划、数据结构操作等。以下是几个常见算法的简单示例:

  1. 排序算法:

    • 冒泡排序
    • 插入排序
    • 选择排序
    • 快速排序
    • 合并排序
    • 堆排序



# 快速排序示例
def quicksort(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 quicksort(left) + middle + quicksort(right)
 
arr = [3,6,8,10,1,2,1]
print(quicksort(arr))  # 输出: [1, 1, 2, 3, 6, 8, 10]
  1. 搜索算法:

    • 线性搜索
    • 二分搜索(前提是数组已排序)



# 二分搜索示例
def binary_search(arr, x):
    left = 0
    right = len(arr) - 1
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == x:
            return True
        elif arr[mid] > x:
            right = mid - 1
        else:
            left = mid + 1
    return False
 
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
x = 6
print(binary_search(arr, x))  # 输出: True
  1. 图算法:

    • 深度优先搜索(DFS)
    • 广度优先搜索(BFS)
    • Dijkstra算法(单源最短路径)
    • 最小生成树算法(Prim/Kruskal)



# 深度优先搜索示例(DFS)
from collections import deque
 
def dfs(graph, start):
    visited = set()
    stack = [start]
 
    while stack:
        vertex = stack.pop()
        if vertex not in visited:
            visited.add(vertex)
            stack.extend(set(graph[vertex]) - visited)
    return visited
 
# 使用DFS的图示例
graph = {'A': ['B', 'C'],
         'B': ['A', 'D', 'E'],
         'C': ['A', 'F'],
         'D': ['B'],
         'E': ['B', 'F'],
         'F': ['C', 'E']}
 
print(dfs(graph, 'A'))  # 输出: {'A', 'C', 'B', 'E', 'F', 'D'}
  1. 动态规划:

    • 0-1背包问题
    • 最长子序列问题



# 0-1背包问题示例
def knapsack(weight, value, n, W):
    K = [[0 for w in range(W+1)] for i in range(n+1)]
    for i in range(n+1):
        for w in range(W+1):
            if i == 0 or w == 0:
                K[i][w] = 0
            elif weight[i-1] <= w:
                K[i][w] = max(K[i-1][w], K[i-1][w-weight[i-1]] + value[i-1])
            else:
                K[i][w] = K[i-1][w]
    return K[n][W]
 
# 使用动态规划解决0-1背包问题的示例
weights = [2, 1, 3]
values = [4, 

评论已关闭

推荐阅读

Vue中使用mind-map实现在线思维导图
2024年08月04日
VUE
Web前端最全Vue实现免密登录跳转的方式_vue怎么样不登录返回首页,最强技术实现
2024年08月04日
VUE
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)
2024年08月04日
VUE
Vue-颜色选择器实现方案——>Vue-Color( 实战*1+ Demo*7)
2024年08月04日
VUE
Vue项目卡顿慢加载?这些优化技巧告诉你!_vue数据多渲染卡顿
2024年08月04日
VUE
vue中的keep-alive详解与应用场景
2024年08月04日
VUE
Vue、React实现excel导出功能(三种实现方式保姆级讲解)
2024年08月04日
vue-office/docx插件实现docx文件预览
2024年08月04日
VUE
java调用js文件的两种方法(支持V8引擎)
2024年08月04日
JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js
2024年08月04日
两周从爬虫小白变大神 _yjs_js_security_passport
2024年08月04日
JS笔记(对象、函数、数组)
2024年08月04日
Markdown.js:强大的纯JavaScript Markdown解析器
2024年08月04日
Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。
2024年08月04日
vue 父组件怎么获取子组件里面的data数据
2024年08月04日
VUE
个人开发实现AI套壳网站快速搭建(Vue+elementUI+SpringBoot)
2024年08月04日
el-table 表格封装并改造实现单元格可编辑
2024年08月04日
none
nodejs环境下创建vue项目、SSH密钥登陆!!!
2024年08月04日
vue+quill+element-ui实现视频、图片上传及缩放保姆级教程,轻松使用富文本
2024年08月04日
【three.js】22. Imported Models导入模型
2024年08月04日