软件环境:Python 3.7.0b4一、散列函数无论你给它什么数据,它都还你一个数字。它必须满足一些要求:它必须是一致的。例如,假设你输入apple时得到的是4,那么每次输入apple时,得到的都必须为4。它应将不同的输入映射到不同的数字。例如,如果一个散列函数不管输入是什么都返回1,那它就不是好的散列函数。最理想的情况是 将不同的输入映射到不同的数字。使用函数dict来创建散列表>>> book = dict()
>>> book["apple"] = 0.67 # ...
康奈尔笔记模板线索Cues笔记Notes编写第一种算法--二分查找讨论算法的运行时间--O表示法算法设计方法--递归听课后复习的思考图表 二分输入必须是有序的,查找的元素如果包含在列表,也返回位置,否则返回null。logn步就好了代码实例 Codespython 1def binary_search(list, item):2# low and high keep track of which part of the list you‘ll search in. 3 low = 04 high = len(list) - 15 6# While you haven‘t ...
一、区别:程序中可以允许无限循环的存在,如一般操作系统中的作业调度器(Job Schduler),在启动后,除非关机或产生例外情况,不然会一直处于执行等待循环。但算法必须是有限的,这是两者之间最大的不同。二、评判程序设计语言好坏的四项原则: 可读性高 平均成本低 (编码、执行、编译、维护、学习、调试以及更新等成本) 可靠性高(代码稳定性高) 可编写性高三、面向对象程序设计的三种特性: 封装:将静态属性数...
前言:今天是第一篇 以后尽量每天写 看具体时间安排吧 目前一边学Python、Java、Go还有算法 所以写的比较少主要是Python一天差不多16小时吧 Java、go看时间安排 这次算法全是用Python演示的 不懂Python的也没关系或者可以看一下我前面的帖子算法是什么:算法是一只组完成任务的指令 要么速度快、要么能解决问题应该说是为实现某些目的的逻辑 以及 思想 的代码 二分查找 假设你要查找电话本里k开头的人 里可能会直接滑动到中间 因为...
"""网页缓存"""
cache = {} # 缓存def get_page(url):if cache.get(url): # 如果网页在缓存中return cache[url]else:data = get_data_from_serve(url) # 从服务器获取网页cache[url] = data # 先将数据保存到缓存中return data点赞 收藏分享文章举报我是小杨我就这样发布了165 篇原创文章 · 获赞 30 · 访问量 1万+私信
关注
文章目录
1.本章内容2.章节引言2.1 本书主要内容2.2 问题解决技巧
3.二分查找3.1 什么是二分查找?3.2 二分查找的工作原理3.3 代码实现二分查找算法3.3 示例代码3.4 二分查找的时间复杂度
4.大O表示法4.1 大O表示法基本概念4.2 常见的大O运行时间
5.旅行商问题6.本章小结
1.本章内容
为阅读后续内容打下基础编写第一种查找算法——二分查找学习如何谈论算法的运行时间——大O表示法了解一种常用的算法设计方法——递归 章节目录如下...
文章目录
写在前面本书学习路线打好基础应用更加广泛的算法的介绍
阅读计划!!
写在前面
为啥说是从0.1开始呢—— 目前基本情况: 大二上学期学习过数据结构与算法 但是基础打得较薄弱,且手撸算法能力极弱,恰巧这学期需要使用python进行科研方向的学习,所以选用了这本基于python的算法书《算法图解》。 为了更扎实地对数据结构与算法进行学习 给之后在LeetCode上面刷题打一个好基础 开刷~
从今天开始尽量日更笔记吧~然后频繁地...
一 、算法简介
1.1 二分查找对于包含n个元素的列表,用二分查找最多需要log2n步,而简单查找最多需要n步 仅当列表是有序的时候,二分查找才管用 代码实现: def binary_search(list, item):low = 0high = len(list) - 1while low <= high:mid = (low + high)guess = list[mid]if guess == item:return midif guess > item:high = mid - 1else:low = mid + 1return Nonemy_list = [1, 3, 5, 7, 9]print(binary_search(my_list, 3)...
《算法图解》
链接: https://pan.baidu.com/s/138Di8I8K_iRkGr15PDswYQ 提取码: r7walabuladong的算法小抄
获取链接:https://pan.baidu.com/s/1qpL4t6jmZnZgRvGlt8SSxg 提取码:KfGM
最短路径
最短路径的求取有两种经典的算法,分别是Dijkstra算法和Floyd算法
这Dijkstra算法的算法思想是基于贪心算法的,也就是选择权值最小的边
而Floyd算法的算法思想是根据动态规划,不断迭代取得的
Dijkstra算法:从顶点出发,优先选择与连接两个顶点集合中的权值最小的边,求单源最短路径
Floyd算法:求多源最短路径,不断迭代列表中的数据Dijkstra
Dijkstra算法的核心是实时更新三个列表信息构成的 —— 这与最小生成树中的P...
C1 算法简介
1. 二分查找
如果数据的组织是有序的,那么从中间开始进行查找,每次判断可以排除一半的数据,可以极大的节省资源。对于包含n个元素的列表,用二分查找最多需要log2n步,而简单查找最多需要n步。
def binary_search(list, item): low = 0 high = len(list)—1 while low <= high:mid = (low + high)guess = list[mid] if guess == item:return mid if guess > item:high = mid - 1 else:low = mid + 1 return None2. 大...
【题目描述】
给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。
注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。
示例 1:
输入:s = "ADOBECODEBANC", t = "ABC"
输出:"BANC"
示例 2:
输入:s = "a", t = "a"
输出:"a"
示例 3:
输入:s = "a", t = "bb"
输出:""来源:力扣(LeetCode)第76题
链接:https://leetcode-cn.com/p...
算法图解学习笔记一
第一章 算法简介
1.1 引言算法在能解决问题的基础上,讲究速度与效率。 用大O表示法讨论运行时间
1.2 二分查找1.输入: 有序的元素列表2.输出: if 要查找的元素包含在列表中,二分查找返回其位置 else 返回NULL3.思想: 使用二分查找,每次排除一半的数字4.对于包含n个数的列表,用二分查找最多log n 步,而简单查找需要n步5.具体算法:
def binary_search(list, item):low=0high=len(list)-1while l...
算法图解
第一章 算法简介
1.1 引言
算法是一组完成任务的指令。任何代码片段都可视为算法。
1.2 二分查找对数
你可能不记得什么是对数了,但很可能记得什么是幂。\(\lg100\) 相当于问“将多少个10相乘的结果是100”。答案是两个:\(10 * 10 = 100\)。因此,\(\lg100\) = 2。
对数运算是幂运算的逆运算。
\[10^2 = 100 \iff lg100 = 2\10^3 = 1000 \iff lg1000 = 3\2^3 = 8 \iff log_2 8 = 3\2^4 = 16 \iff log_2 16 = 4\2^5 = 32...
# 了解基本数据结构 - 数组和链表
数组:- 内存是连着的,元素不能随意添加存储。 - 优势:读取元素 (因为地址都是已知的) -运行时间: ...读取O(1) 地址已知,读取很快 ...插入O(n) 插入元素,需将后面的元素都向后或向前移动一位 ...删除O(n) 删除元素后,后面的元素都向前移
eg:(几个朋友相约一起看电影,坐会了后,又突然来了个朋友,可是连着的位...