算法-----python实现
斐波那契数列
def f(n):
if n == 1:
return 1
elif n == 2:
return 1
else:
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 = 0
high = len(li) - 1
while low <= high:
mid = (low + high) // 2
if li[mid] < val:
low = mid + 1
elif li[mid] > val:
high = mid -1
else:
return mid
return None
冒泡排序
import random def bubble_sort(li):
for i in range(len(li)-1): # i表示第i趟,共n-1趟
# 第i趟 无序区范围 0~n-i-1
for 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 = False
for j in range(len(li)-1):
if li[j] > li[j+1]:
li[j],li[j+1] = li[j+1],li[j]
exchange = True
if not exchange:
return li=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 = 0
for i in range(1,len(li)):
if li[i] < li[min_pos]:
min_pos = i
return min_pos @cal_time
def select_sort(li):
for i in range(len(li)-1):
min_pos = i
for j in range(i+1,len(li)):
if li[j] < li[min_pos]:
min_pos = j
li[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-1
tmp = li[i]
while j>=0 and li[j] > tmp:
# 两个终止条件: 1. j==-1 2. j位置的值小于等于tmp
li[j+1] = li[j]
j -=1
li[j+1] = tmp li = list(range(10000))
random.shuffle(li)
insert_sort(li)
插入排序的最好情况也是O(n),最坏时间复杂度是O(n2)
冒泡排序,选择排序,插入排序的空间复杂度是O(1)
快速排序:
算法-----python实现的更多相关文章
- pageRank算法 python实现
一.什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google 产品经理),因为他是这个算法的发明者之一,还是google CEO( ...
- 常见排序算法-Python实现
常见排序算法-Python实现 python 排序 算法 1.二分法 python 32行 right = length- : ] ): test_list = [,,,,,, ...
- kmp算法python实现
kmp算法python实现 kmp算法 kmp算法用于字符串的模式匹配,也就是找到模式字符串在目标字符串的第一次出现的位置比如abababc那么bab在其位置1处,bc在其位置5处我们首先想到的最简单 ...
- KMP算法-Python版
KMP算法-Python版 传统法: 从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将模式串向右移动一位.这有什么难的? 我们可以 ...
- 压缩感知重构算法之IRLS算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
- 压缩感知重构算法之OLS算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
- 压缩感知重构算法之CoSaMP算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
- 压缩感知重构算法之IHT算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
- 压缩感知重构算法之SP算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
- 压缩感知重构算法之OMP算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
随机推荐
- 用 Vue 开发一个简单的答题应用(一)
Vue 之类的 MVVM 框架,能帮助我们用更少的代码实现复杂的业务. 为了简单一点,开发计划分成三阶段: 一,数据写死,实现基本的答题效果.支持多种题型. 二,使用本地存储保存数据,支持题目录入的功 ...
- JMS的P2P和PUB/SUB区别和应用场景介绍【转】
完全引用自: https://my.oschina.net/alexgaoyh/blog/338890 解释得非常棒. 1.P2P模型 在P2P模型中,有下列概念: 消息队列(Queue). 发送者 ...
- maven打包子模块中的class文件
通常在项目中都会使用maven进行多模块管理,默认被依赖的模块都会以jar包形式被引用.然而在J2EE项目中,当使用了Spring的自动扫描配置时,jar包形式的依赖class将不能被自动装配:< ...
- [PageNofM]一直显示数字+0
解决办法: Options->ReportOptions->DoublePass勾选即可
- codeforces724G Xor-matic Number of the Graph
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- js对当前时间的相关操作
链接:https://www.cnblogs.com/visi_zhangyang/p/3490122.html js中获得当前时间是年份和月份,形如:201208 //获取完整的日期 v ...
- CF418D Big Problems for Organizers
传送门 题意,给一棵树,每次给两个点\(x,y\),求\(\max_{i=1}^{n}(\min(di_{x,i},di_{y,i}))\) 看std看了好久 以下是一个优秀的在线做法,\(O(nlo ...
- luogu P2480 [SDOI2010]古代猪文
M_sea:这道题你分析完后就是一堆板子 废话 理解完题意后,我们要求的东西是\(G^s(s=\sum_{d|n} \binom{n}{d})\) 但是这个指数\(s\)算出来非常大,,, 我们可以利 ...
- java gc
mark下来 https://plumbr.eu/handbook/what-is-garbage-collection
- AJAX请求 $.ajaxSetup方法的使用:设置AJAX请求的默认参数选项,当程序中需要发起多个AJAX请求时,则不用再为每一个请求配置请求的参数
定义和用法ajaxSetup() 方法为将来的 AJAX 请求设置默认值.语法$.ajaxSetup({name:value, name:value, ... }) 该参数为带有一个或多个名称/值对的 ...