算法
pigsquirrel
一只不会打代码的可爱的肥猪鼠
展开
-
散列表
散列表将散列表用作缓存小结冲突性能填装因子小结 将散列表用作缓存 ①缓存是一种常用的加速方式,缓存的数据存储在散列表中 ②当访问facebook页面时,它首先检查散列表中是否存储了该页面,具体代码如下: cache={} def get_page(url): if cache.get(url): return cache[url] else: data=get_data_from_serve(url) cache[url] = data return data 仅当url不在缓存中,服原创 2020-09-17 21:35:08 · 212 阅读 · 1 评论 -
快速排序
快速排序D&C递归算法-快速排序快速排序分区如何对子数组进行排序快速排序代码再谈大O表示法比较合并排序和快速排序平均情况和最糟情况的时间小结 D&C递归算法-快速排序 ①解决问题的过程包括两个步骤: 找出基线条件 不断将问题分解,直到符合基线条件 ②使用循环求数字列表的和 def sum(list): total=0 for x in list: total+=x return total print(sum([2,4,6,8])) 使用递归求数字列原创 2020-09-17 11:17:49 · 133 阅读 · 0 评论 -
递归
递归基线条件和递归条件栈递归调用栈 基线条件和递归条件 ①如果使用循环,程序的性能更高,如果使用递归,程序更容易理解。 ②编写递归函数时,必须告诉它何时停止。 每个递归函数有两部分:基线条件和递归条件 递归条件是调用自己,基线条件是指函数不再调用自己,避免无限循环。 def count(i): print(i) if i<=0:#<=基线条件 return else: count(i-1) 栈 递归调用栈 ①计算阶乘 def fact(原创 2020-09-17 10:19:36 · 128 阅读 · 0 评论 -
选择排序
选择排序数组和链表运行时间在中间插入删除使用多的是什么找出数组中最小元素小结 数组和链表 ①链表: 链表中的元素可以存储在内存的任何地方,每个元素都存储了下一个元素的地址,使内存地址串在一起。使用链表时,不需要移动元素,在插入元素方面有优势。 需要读取链表最后一个元素时,不能直接读取,必须先访问#1从而获取#2的地址,直到访问最后一个元素,在需要读取所有元素的时候,链表的效率很高,但如果要跳跃,效率很低。 ②数组: 使用数组意味着所有代办事项在内存中都是相连的,缺点:额外请求的位置可能根本用不上,浪费内存。原创 2020-09-16 17:05:07 · 103 阅读 · 1 评论 -
二分查找
二分查找更佳的查找方式运行时间 更佳的查找方式 ①对于包含n个元素的列表,用二分查找最多需要log2n步。简单查找最多需要n步。 ②使用数组查找元素。函数binary_search接受一个有序数组和一个元素。 def binary_search(list,item): low=0 high=len(list)-1 while low<=high: mid=(low+high) #每次都检查中间的元素(如果low+high不是偶数 #自动将原创 2020-09-16 16:44:59 · 88 阅读 · 0 评论