Python之旅算法篇

算法简介

一个计算过程,解决问题的方法。
平时我们写的任何代码片段都可以称为算法。
而有一些算法要么执行速度很快,要么能解决某类有趣的问题,
要么兼而有之,通用性强。

大O表示法

指出了算法有多快(并非以秒为单位的速度)
指的是最糟情况下的运行效率
O(n) --> n是操作数

时间复杂度

评估算法运行效率的式子(大O表示法)

空间复杂度

评估算法占内存大小的式子
“空间” 换 “时间”

常见的时间复杂度

O(1) < O(logn) < O(n) < O(nlogn) <
O( n 2 n^2 n2) < O( n 2 n^2 n2logn) < O( n 3 n^3 n3)

快速判断算法的复杂度

1)确定问题规模n
2)循环减半过程 --> logn
3)k层关于n的循环 --> n k n^k nk

算法的稳定与不稳定

简单来说就是,挨着交换的算法稳定;跨着交换的算法不稳定

查找算法

线性查找

https://blog.csdn.net/qq_32617703/article/details/101534784

二分查找

https://blog.csdn.net/qq_32617703/article/details/101535311

广度优先搜索

https://blog.csdn.net/qq_32617703/article/details/101706841

排序算法

排序L(ow)B三人组

冒泡排序

https://blog.csdn.net/qq_32617703/article/details/101600754

选择排序

https://blog.csdn.net/qq_32617703/article/details/101601157

插入排序

https://blog.csdn.net/qq_32617703/article/details/101601416

排序N(ubility)B三人组

快速排序

https://blog.csdn.net/qq_32617703/article/details/101705276

堆排序

https://blog.csdn.net/qq_32617703/article/details/101705581

堆排序内置模块heapq

https://blog.csdn.net/qq_32617703/article/details/101707913

归并排序

https://blog.csdn.net/qq_32617703/article/details/101705891

其他排序算法

希尔排序

https://blog.csdn.net/qq_32617703/article/details/101706020

计数排序

https://blog.csdn.net/qq_32617703/article/details/101706306

桶排序

https://blog.csdn.net/qq_32617703/article/details/101706436

基数排序

https://blog.csdn.net/qq_32617703/article/details/101706539

LB与NB总结

排序方法                    时间复杂度               空间复杂度       稳定性     代码复杂度
                最坏情况    平均情况    最好情况
冒泡排序         O(n^2)     O(n^2)     O(n)        O(1)             稳定       简单
直接选择排序     O(n^2)     O(n^2)     O(n^2)      O(1)             不稳定     简单
直接插入排序    O(n^2)     O(n^2)     O(n^2)      O(1)              稳定      简单
快速排序       O(n^2)     O(nlogn)   O(nlogn)    平均情况O(logn);   不稳定    较复杂
                                                最坏情况O(n)
堆排序        O(nlogn)   O(nlogn)   O(nlogn)    O(1)              不稳定    复杂
归并排序     O(nlogn)    O(nlogn)   O(nlogn)    O(n)              稳定     较复杂
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值