算法-----python实现
Posted hnlmy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法-----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)
以上是关于算法-----python实现的主要内容,如果未能解决你的问题,请参考以下文章
片段(Java) | 机试题+算法思路+考点+代码解析 2023