
基础算法
欲庐骄子
在校研究生
展开
-
二分查找
def binary_search(arr, x): left = 0 right = len(arr)-1 while left <= right: mid = (left+right) // 2 if arr[mid] > x: right = mid-1 elif arr[mid] &...原创 2019-12-15 19:51:37 · 151 阅读 · 0 评论 -
进制转换
def f(x, y): return x//y, x%y def dec_to_bin(num): ls = [] if num < 0: return "-"+dec_to_bin(abs(num)) while True: num, r = f(num, 2) ls.append(str(r)) ...原创 2019-12-15 19:51:04 · 192 阅读 · 0 评论 -
递归算法的时间复杂度分析
在算法分析中,当一个算法中包含递归调用时,其时间复杂度的分析会转化为一个递归方程求解。实际上,这个问题是数学上求解渐近阶的问题,而递归方程的形式多种多样,其求解方法也是不一而足,比较常用的有以下四种方法: (1)代入法(Substitution Method)  ...转载 2018-10-28 15:10:30 · 770 阅读 · 0 评论 -
快速排序实现
def quickSort(l, left, right): # 当left < right才成立 if(left < right): # 选择最左边的数为基准元素 base = l[left] # 复制能移动的i, j i = left j = right # 当i=j相遇...原创 2019-04-27 16:35:52 · 118 阅读 · 0 评论 -
归并排序
# 子数组合并过程 def merge(leftarr, rightarr): result = [] i = 0 j = 0 # 合并 while(i < len(leftarr) and j < len(rightarr)): if(leftarr[i] <= rightarr[j]): resu...原创 2019-04-27 17:46:32 · 113 阅读 · 0 评论 -
Python矩阵乘法实现
def matrixMul(A, B): if len(A[0]) == len(B): res = [[0] * len(B[0]) for i in range(len(A))] for i in range(len(A)): for j in range(len(B[0])): for k in ...原创 2019-08-13 17:56:44 · 2272 阅读 · 0 评论