栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

经典算法总结(ing持续更新)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

经典算法总结(ing持续更新)

经典算法总结

本文收集了广泛使用的经典算法,包括排序算法、数据结构等,并且列出了经典算法的大纲方便以后复习串联,如有错误,还望海涵。
由于博主的方向需要,本文超链接是基于python语言,都是比较简明的教程链接。

目录
  • 经典算法总结
  • 1.排序算法
  • 2.数据结构算法
    • 2.1 数组
    • 2.2 字符串
    • 2.3 栈
    • 2.4 队列
    • 2.5 链表
    • 2.6 树
    • 2.7 散列表
    • 2.8 堆
    • 2.9 图
  • 3.算法思想


本文所列出的为算法经典解的复杂度,实际上算法可以有多种实现形式。

复杂度的阶级关系如下图所示:

1.排序算法
算法最坏最好平均空间
1.冒泡排序O(n^2)Ω(n)θ(n^2)O(1)
2.选择排序O(n^2)Ω(n^2)θ(n^2)O(1)
3.插入排序O(n^2)Ω(n)θ(n^2)O(1)
4.快速排序O(n^2)Ω(n log(n))θ(n log(n))O(n)
5.归并排序O(n log(n))Ω(n log(n))θ(n log(n))O(1) 或 O(n)
6.堆排序O(n log(n))Ω(n log(n))θ(n log(n))O(1)
7.桶排序O(n^2)Ω(n+k)θ(n+k)O(nk)
8.基数排序O(nk)Ω(nk)θ(nk)O(n+k)

排序算法的分类:

2.数据结构算法 2.1 数组

常用数组操作:【传送门】

  • 内存地址顺序结构排列的元素集合
2.2 字符串

常用字符串的操作:【传送门】

  • 字符序列,不可变类型,可以被切片
  • 对字符串的更改实际上使用了新空间
2.3 栈

【传送门】后进先出,顺序栈可以用数组来表示,链栈因为python等高级语言屏蔽掉了指针,所以要使用类体等数据结构来实现

2.4 队列

先进先出,可以用python包来实现【传送】,但不建议在算法中调模块,也可以用数组来表示,只需要看你使用的方式,体现出队列的属性即可,链队的实现方式同栈,循环队列的实现方式也可以使用顺序结构+控制来实现。

2.5 链表

有单链表,双向链表,循环链表等,这些万变不离其宗,都是链式存储结构。关于链表实现的文章:【传送门】

2.6 树

树形结构为非顺序存储结构,根据指针指向的地址的方式生成带树形构造的逻辑空间。
二叉树:根节点仅仅有一个,父节点的子节点最多只能有两个(关于该部分的严格定义本文不做讨论,可以参照网上的资料),常见配合使用的有二叉排序树(二叉查找树)等

2.7 散列表

主要有hash表等,这些映射的方式效率是极高的,可以快速查找数据。

2.8 堆

根据数组元素下标的位置,有:
父节点:(i-1)/2
子左节点:2i+1
子右节点:2i+2
根据公式可以构造最大堆、最小堆,堆只能保证父节点大于子节点的相对有序。根据堆的性质可以执行上升、下降、堆排等操作

2.9 图

图是网状数据结构,可用深度优先、广度优先等方式遍历。关于图的十大经典算法,可以参照这篇文章:图的十大经典算法

3.算法思想

五大常用算法有:分治、贪心、动态规划、回溯和分支界定

其他类似地还有双指针、滑动窗口、二分查找、记忆化搜索、滚动哈希、位运算、递归、组合数学、矩阵等。可以自查是否都掌握。

推荐一些很好的教程:

  • https://www.cnblogs.com/onepixel/articles/7674659.html
  • https://blog.csdn.net/l975764577/article/details/39399077
  • https://blog.csdn.net/Edward_Asia/article/details/121419975

收集不易,点个赞吧

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000724.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号