斐波那契数列

def f(n):if n == 1:return 1elif n == 2:return 1else:return f(n-1)+f(n-2)print(f(8))

用普通函数实现斐波那契数列:

def f(n):li = [0,1,1]if n <=2:return li[n]for i in range(3,n+1):li.append(li[-1]+li[-2])return li[n]print(f(8))

常见的时间复杂度(按照效率排序)

O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3)

递归实例:汉诺塔问题

def hanoi(n,A,B,C):if n > 0:hanoi(n-1,A,C,B)print("%s->%s"%(A,C))hanoi(n-1,B,A,C)hanoi(4,"A","B","C")

二分查找

def binary_search(li, val):low = 0high = len(li) - 1while low <= high:mid = (low + high) // 2if li[mid] < val:low = mid + 1elif li[mid] > val:high = mid -1else:return midreturn None

冒泡排序

import randomdef bubble_sort(li):for i in range(len(li)-1):  # i表示第i趟,共n-1趟# 第i趟 无序区范围 0~n-i-1for j in range(len(li)-i-1):if li[j] > li[j+1]:li[j],li[j+1] = li[j+1],li[j]print(li)li = [8,5,7,9,4,2,6,1,3]
bubble_sort(li)

冒泡排序------优化

@cal_time
def bubble_sort_2(li):for i in range(len(li)-1):exchange = Falsefor j in range(len(li)-1):if li[j] > li[j+1]:li[j],li[j+1] = li[j+1],li[j]exchange = Trueif not exchange:returnli=list(range(10000))
random.shuffle(li)
bubble_sort_2(li)

冒泡排序最好时间复杂度是O(n),最坏时间复杂度是O(n2)

选择排序:

import random
from cal_time import *# 找到最小数的位置
def find_min_pos(li):min_pos = 0for i in range(1,len(li)):if li[i] < li[min_pos]:min_pos = ireturn min_pos@cal_time
def select_sort(li):for i in range(len(li)-1):min_pos = ifor j in range(i+1,len(li)):if li[j] < li[min_pos]:min_pos = jli[i],li[min_pos] = li[min_pos],li[i]li = list(range(10000))
select_sort(li)

选择排序没有最好排序,最坏时间复杂度是O(n2)

插入排序:

import random
from cal_time import *
@cal_time
def insert_sort(li):for i in range(1,len(li)):# i 表示趟数 还表示摸到牌的位置j = i-1tmp = li[i]while j>=0  and li[j] > tmp:# 两个终止条件: 1. j==-1 2. j位置的值小于等于tmpli[j+1] = li[j]j -=1li[j+1] = tmpli = list(range(10000))
random.shuffle(li)
insert_sort(li)

插入排序的最好情况也是O(n),最坏时间复杂度是O(n2)

冒泡排序,选择排序,插入排序的空间复杂度是O(1)

快速排序:

转载于:https://www.cnblogs.com/hnlmy/p/9845965.html

算法-----python实现相关推荐

  1. 棋盘最短路径 python_Dijkstra 最短路径算法 Python 实现

    Dijkstra 最短路径算法 Python 实现 问题描述 使用 Dijkstra 算法求图中的任意顶点到其它顶点的最短路径(求出需要经过那些点以及最短距离). 以下图为例: 算法思想 可以使用二维 ...

  2. 2021-03-15 数据挖掘算法—K-Means算法 Python版本

    数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...

  3. 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

    粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...

  4. 最优化算法python实现篇(4)——无约束多维极值(梯度下降法)

    最优化算法python实现篇(4)--无约束多维极值(梯度下降法) 摘要 算法简介 注意事项 算法适用性 python实现 实例运行结果 算法过程可视化 摘要 本文介绍了多维无约束极值优化算法中的梯度 ...

  5. 最优化算法python实现篇(3)——无约束一维极值(黄金分割法)

    最优化算法python实现篇(3)--无约束一维极值(黄金分割法) 算法适用问题 python实现 示例运行结果 算法适用问题 搜索给定单峰区间的极值问题,一般对凸优化问题比较适用. python实现 ...

  6. 最优化算法python实现篇(2)—无约束一维极值(二分法)

    最优化算法python实现篇(2)--无约束一维极值(二分法) 算法适用问题 python实现 示例运行结果 算法适用问题 搜索给定单峰区间的极值问题,一般对凸优化问题比较适用. python实现 # ...

  7. 多元线性回归算法python实现_手写算法-Python代码推广多元线性回归

    1.梯度下降-矩阵形式 上篇文章介绍了一元线性回归,包括Python实现和sklearn实现的实例.对比,以及一些问题点,详情可以看这里: 链接: 手写算法-Python代码实现一元线性回归 里面封装 ...

  8. 哈希运算python实现_一致性哈希算法 python实现

    # -*- coding: utf-8 -*- """ 一致性哈希算法 python实现 参考 http://weblogs.java.net/blog/2007/11/ ...

  9. (四)协同过滤算法之基于用户的推荐算法python实现

    一.背景 关于推荐算法的相关背景介绍,已经在上一个姊妹篇(三)协同过滤算法之基于物品的推荐算法python实现中有所介绍.在此,便不在赘述,本文主要介绍基于用户的协同过滤算法,而对推荐算法不太清楚的朋 ...

  10. list 排序_十个必知的排序算法|Python实例系列

    十大排序: 1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序7.堆排序8.计数排序9.桶排序10.基数排序 完整代码和注释如下 # -*- coding: UTF-8 -*-# ...

最新文章

  1. Spring Boot 2.3 中开启Spring Security
  2. AI产业投融资情况回顾、中美科技巨头AI产业投资布局以及领先投资机构AI产业投资布局...
  3. android movie studio 下载,Movie Studio+ Video Editor
  4. [轉]MS SQL Server启用AWE用查看内存使用情况
  5. rsync 相关参数
  6. JAVA的IO编程:管道流
  7. Flutter入门:如何只关闭自身页面
  8. 牛客练习赛 58——树链剖分
  9. 介绍“又一个” Cloud Foundry Gradle插件
  10. 服务器性能测试典型工具介绍
  11. Oracle导出导入dmp文件(exp.imp命令行)
  12. 小白学HarmonyOS,HarmonyOS 2.0正式发布 分布式能力获得全面升级
  13. 泛型TListT Generics.Collections单元
  14. Exchange 技巧(1) Exchange2010 邮件收发统计
  15. 不是有效的win32程序_Python实用案例编程入门:第十一章 做一个年会抽奖程序
  16. 华硕笔记本的 Ubuntu 18.04 安装 nvidia 显卡驱动并支持 HDMI 输出
  17. 导出excel表格并返回给前端的快捷用法(上)
  18. 餐饮SaaS行进时:美团To B,二维火To C
  19. 《送元二使安西》 王维渭城朝雨浥轻尘,客舍清清柳色新。劝君更尽一杯酒,西出阳关无故人。英文
  20. vim删除文本的命令

热门文章

  1. php自动关闭页面代码,HTML_下载完成后页面不自动关闭的方法,下载完成后页面不自动关闭的 - phpStudy...
  2. php6 配置,thinkphp6如何配置环境变量
  3. python assert
  4. java的关键字和保留字_Java关键字和保留字及其含义
  5. EIP-712 (一个对结构化数据的哈希标准)
  6. Spark整合ElasticSearch
  7. 弱电施工流程及规范(二)
  8. 想和人脑一样智能? IBM 的芯片级模仿才是关键
  9. box head上身旋转问题
  10. Ado.Net 实体类、数据连接类、数据访问类