
算法图解回顾
文章平均质量分 72
upDiff
专注于计算机视觉和深度学习领域,8年+AI项目实战经验。善于将复杂的概念简化为易于理解的形式,并提供清晰的示例代码和运行结果,帮助大家速掌握相关技术。
展开
-
《算法图解》第五章 散列表(散列函数)
《算法图解》第五章 散列表概述散列函数python实现 概述 简单查找的时间复杂度是O(n),二分查找的时间复杂度是O(logn),如果希望时间复杂度降为O(1),则可以使用散列表。 散列函数 散列函数需要满足的条件: 相同的输入映射到相同的数字 不同的输入映射到不同的数字 假设散列函数为f(x),将商品的价格用散列表存储,设目前数组arr的长度为5: f(Apple)=3,则Apple在数组中的索引为3,,其中Apple的价格为5.6 f(Milk)=3,则Milk在数组中的索引为0,,其中Milk原创 2020-08-02 12:01:05 · 468 阅读 · 0 评论 -
《算法图解》第四章 快速排序与递归
列表求和的循环和递归表示 循环 def sum(arr): total = 0 for x in arr: total += x return total print(sum(arr)) 递归 基线条件: 如果数组不包括任何元素,则和为0 如果数组只有一个元素,则直接返回 def sum(arr): if len(arr)==0: return 0 elif len(arr)==1: return arr[0] else: return arr[0] + sum(arr[1原创 2020-07-31 07:54:18 · 222 阅读 · 0 评论 -
《算法图解》第三章 递归之栈
理解基线条件和递归条件 def countdown(i): print(i) if i <=0: return else: countdonw(i-1) 递归调用栈 def fact(x): if x == 1: return 1 else: return x*fact(x-1) 小结 递归指的是调用自己的函数 每个递归函数都有两个条件:基线条件和递归条件 栈有两种操作:压入和弹出 所有函数调用都进入调用栈 调用栈将占用大量的内存如果它很长 ...原创 2020-07-31 07:31:32 · 201 阅读 · 0 评论 -
《算法图解》第二章 选择排序之数组与链表
常见数组和链表的运行时间 数组 读取O(1) 插入O(n) 删除O(n) 链表 读取O(n) 插入O(1) 删除O(1) 选择排序 def findSmallest(arr): smallest = arr[0] smallest_ index = 0 for i in range(1,len(arr)): if arr[i] < smallest: smallest = arr[i] smallest_ index = i return smallest_ index原创 2020-07-30 08:04:15 · 241 阅读 · 0 评论 -
《算法图解》第一章 算法简介之python 二分查找
python 二分查找 def binary_search(lst, item): low=0 high = len(lst)-1 while low <= high: mid = (low + high)/2 guess = lst[mid] if guess == item: return mid if guess > item: high = mid- 1 else: low=mid+1 return None my_list=[1,3,5,7原创 2020-07-30 07:50:11 · 262 阅读 · 0 评论