算法-----python实现
斐波那契数列
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实现相关推荐
- 棋盘最短路径 python_Dijkstra 最短路径算法 Python 实现
Dijkstra 最短路径算法 Python 实现 问题描述 使用 Dijkstra 算法求图中的任意顶点到其它顶点的最短路径(求出需要经过那些点以及最短距离). 以下图为例: 算法思想 可以使用二维 ...
- 2021-03-15 数据挖掘算法—K-Means算法 Python版本
数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...
- 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用
粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...
- 最优化算法python实现篇(4)——无约束多维极值(梯度下降法)
最优化算法python实现篇(4)--无约束多维极值(梯度下降法) 摘要 算法简介 注意事项 算法适用性 python实现 实例运行结果 算法过程可视化 摘要 本文介绍了多维无约束极值优化算法中的梯度 ...
- 最优化算法python实现篇(3)——无约束一维极值(黄金分割法)
最优化算法python实现篇(3)--无约束一维极值(黄金分割法) 算法适用问题 python实现 示例运行结果 算法适用问题 搜索给定单峰区间的极值问题,一般对凸优化问题比较适用. python实现 ...
- 最优化算法python实现篇(2)—无约束一维极值(二分法)
最优化算法python实现篇(2)--无约束一维极值(二分法) 算法适用问题 python实现 示例运行结果 算法适用问题 搜索给定单峰区间的极值问题,一般对凸优化问题比较适用. python实现 # ...
- 多元线性回归算法python实现_手写算法-Python代码推广多元线性回归
1.梯度下降-矩阵形式 上篇文章介绍了一元线性回归,包括Python实现和sklearn实现的实例.对比,以及一些问题点,详情可以看这里: 链接: 手写算法-Python代码实现一元线性回归 里面封装 ...
- 哈希运算python实现_一致性哈希算法 python实现
# -*- coding: utf-8 -*- """ 一致性哈希算法 python实现 参考 http://weblogs.java.net/blog/2007/11/ ...
- (四)协同过滤算法之基于用户的推荐算法python实现
一.背景 关于推荐算法的相关背景介绍,已经在上一个姊妹篇(三)协同过滤算法之基于物品的推荐算法python实现中有所介绍.在此,便不在赘述,本文主要介绍基于用户的协同过滤算法,而对推荐算法不太清楚的朋 ...
- list 排序_十个必知的排序算法|Python实例系列
十大排序: 1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序7.堆排序8.计数排序9.桶排序10.基数排序 完整代码和注释如下 # -*- coding: UTF-8 -*-# ...
最新文章
- Spring Boot 2.3 中开启Spring Security
- AI产业投融资情况回顾、中美科技巨头AI产业投资布局以及领先投资机构AI产业投资布局...
- android movie studio 下载,Movie Studio+ Video Editor
- [轉]MS SQL Server启用AWE用查看内存使用情况
- rsync 相关参数
- JAVA的IO编程:管道流
- Flutter入门:如何只关闭自身页面
- 牛客练习赛 58——树链剖分
- 介绍“又一个” Cloud Foundry Gradle插件
- 服务器性能测试典型工具介绍
- Oracle导出导入dmp文件(exp.imp命令行)
- 小白学HarmonyOS,HarmonyOS 2.0正式发布 分布式能力获得全面升级
- 泛型TListT Generics.Collections单元
- Exchange 技巧(1) Exchange2010 邮件收发统计
- 不是有效的win32程序_Python实用案例编程入门:第十一章 做一个年会抽奖程序
- 华硕笔记本的 Ubuntu 18.04 安装 nvidia 显卡驱动并支持 HDMI 输出
- 导出excel表格并返回给前端的快捷用法(上)
- 餐饮SaaS行进时:美团To B,二维火To C
- 《送元二使安西》 王维渭城朝雨浥轻尘,客舍清清柳色新。劝君更尽一杯酒,西出阳关无故人。英文
- vim删除文本的命令
热门文章
- php自动关闭页面代码,HTML_下载完成后页面不自动关闭的方法,下载完成后页面不自动关闭的 - phpStudy...
- php6 配置,thinkphp6如何配置环境变量
- python assert
- java的关键字和保留字_Java关键字和保留字及其含义
- EIP-712 (一个对结构化数据的哈希标准)
- Spark整合ElasticSearch
- 弱电施工流程及规范(二)
- 想和人脑一样智能? IBM 的芯片级模仿才是关键
- box head上身旋转问题
- Ado.Net 实体类、数据连接类、数据访问类