恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Python进阶教程:算法与数据结构入门

  • 首页
  • 资讯中心
  • /
  • Python进阶教程:算法与数据结构入门

相关资讯

京东物流(宁城)智慧物流港招商业Logistics Business Recruitment at Jingdong Logistics (Ningcheng) Smart Logistics Por 2026/8/25 12:49:49
飞牛 NAS 搭建笔记 WebDAV 服务器,实现多端笔记互通 2026/8/25 12:49:49
BFC 块级格式化上下文原理、触发条件与应用 2026/8/25 12:49:49

最新资讯

【2015-02-08】【转】如何实现一个malloc
【2015-02-05】Android源码下载简单记录
【2015-02-11】《RealView编译工具开发指南》摘录: C和汇编语言互相调用
【2015-02-27】centos修改ssh端口
P1629 邮递员送信【洛谷算法习题】
从 GEM200 升级到 GEM300:老厂改造要补哪几层,为什么没人愿意做?

今日推荐

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南
洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

Python进阶教程:算法与数据结构入门

发布时间:2026/8/25 12:49:49
Python进阶教程:算法与数据结构入门 目录Python进阶教程算法与数据结构入门一、时间复杂度二、常用数据结构2.1 列表与字典2.2 栈Stack2.3 队列Queue三、排序算法3.1 冒泡排序O(n²)3.2 快速排序O(n log n)四、查找算法五、递归六、动态规划入门七、实战实现 LRU 缓存总结Python进阶教程算法与数据结构入门本文是Python 入门教程系列的第 18 篇扩展篇。算法与数据结构是编程的内功本篇介绍最核心的几种用 Python 实现。一、时间复杂度衡量算法效率用大 O 表示法描述执行时间随数据规模增长的速度复杂度含义示例O(1)常数时间数组按下标访问O(log n)对数时间二分查找O(n)线性时间遍历列表O(n log n)线性对数快速排序O(n²)平方时间冒泡排序二、常用数据结构2.1 列表与字典# 列表有序、可重复fruits[苹果,香蕉,橙子]fruits.append(葡萄)print(fruits[0],len(fruits))# 字典键值对、查找 O(1)scores{张三:90,李四:85}print(scores[张三])print(scores.get(王五,不存在))2.2 栈Stack# 栈后进先出LIFO用列表实现stack[]stack.append(1)# 入栈stack.append(2)stack.append(3)print(stack.pop())# 3 出栈print(stack[-1])# 2 查看栈顶print(len(stack)0)# 判断是否为空2.3 队列Queuefromcollectionsimportdeque# 队列先进先出FIFOqueuedeque([a,b,c])queue.append(d)# 入队print(queue.popleft())# a 出队print(queue)# deque([b, c, d])三、排序算法3.1 冒泡排序O(n²)defbubble_sort(arr):nlen(arr)foriinrange(n-1):forjinrange(n-1-i):ifarr[j]arr[j1]:arr[j],arr[j1]arr[j1],arr[j]returnarrprint(bubble_sort([5,2,8,1,9]))# [1, 2, 5, 8, 9]3.2 快速排序O(n log n)defquick_sort(arr):iflen(arr)1:returnarr pivotarr[len(arr)//2]left[xforxinarrifxpivot]mid[xforxinarrifxpivot]right[xforxinarrifxpivot]returnquick_sort(left)midquick_sort(right)print(quick_sort([5,2,8,1,9]))# [1, 2, 5, 8, 9]四、查找算法# 二分查找要求有序O(log n)defbinary_search(arr,target):left,right0,len(arr)-1whileleftright:mid(leftright)//2ifarr[mid]target:returnmidelifarr[mid]target:leftmid1else:rightmid-1return-1nums[1,3,5,7,9,11]print(binary_search(nums,7))# 3print(binary_search(nums,8))# -1五、递归# 递归函数调用自身deffactorial(n):ifn1:return1returnn*factorial(n-1)print(factorial(5))# 120# 斐波那契带缓存避免重复计算fromfunctoolsimportlru_cachelru_cache(maxsizeNone)deffib(n):ifn2:returnnreturnfib(n-1)fib(n-2)print(fib(50))# 12586269025六、动态规划入门# 经典问题爬楼梯每次 1 或 2 阶defclimb_stairs(n):ifn2:returnn dp[0]*(n1)dp[1],dp[2]1,2foriinrange(3,n1):dp[i]dp[i-1]dp[i-2]returndp[n]print(climb_stairs(10))# 89七、实战实现 LRU 缓存fromcollectionsimportOrderedDictclassLRUCache:最近最少使用缓存def__init__(self,capacity):self.cacheOrderedDict()self.capacitycapacitydefget(self,key):ifkeynotinself.cache:return-1self.cache.move_to_end(key)# 标记为最近使用returnself.cache[key]defput(self,key,value):ifkeyinself.cache:self.cache.move_to_end(key)self.cache[key]valueiflen(self.cache)self.capacity:self.cache.popitem(lastFalse)# 淘汰最久未用cacheLRUCache(2)cache.put(1,A)cache.put(2,B)print(cache.get(1))# Acache.put(3,C)# 淘汰 key2print(cache.get(2))# -1print(cache.get(3))# C总结本篇介绍了时间复杂度、常用数据结构栈、队列、排序与查找算法、递归和动态规划入门并用 LRU 缓存串联实战。刷题建议从 LeetCode 简单题开始每天 1-2 题坚持就是胜利。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号