一.顺序搜索 顺序搜索 是最简单直观的搜索方法:从列表开头到末尾,逐个比较待搜索项与列表中的项,直到找到目标项(搜索成功)或者 超出搜索范围 (搜索失败). 根据列表中的项是否按顺序排列,可以将列表分为 无序列表 和 有序列表.对于 无序列表,超出搜索范围 是指越过列表的末尾:对于 有序列表,超过搜索范围 是指进入列表中大于目标项的区域(发生在目标项小于列表末尾项时)或者指越过列表的末尾(发生在目标项大于列表末尾项时). 1.无序列表 在无序列表中进行顺序搜索的情况如图所示: def seque…
一.顺序搜索 顺序搜索 是最简单直观的搜索方法:从列表开头到末尾,逐个比较待搜索项与列表中的项,直到找到目标项(搜索成功)或者 超出搜索范围 (搜索失败). 根据列表中的项是否按顺序排列,可以将列表分为 无序列表 和 有序列表.对于 无序列表,超出搜索范围 是指越过列表的末尾:对于 有序列表,超过搜索范围 是指进入列表中大于目标项的区域(发生在目标项小于列表末尾项时)或者指越过列表的末尾(发生在目标项大于列表末尾项时). 1.无序列表 在无序列表中进行顺序搜索的情况如图所示: def seque…
一.概述 用Python实现的数据结构与算法 涵盖了常用的数据结构与算法(全部由Python语言实现),是 Problem Solving with Algorithms and Data Structures using Python(简写为PSADSP)的读书笔记. PSADSP 对经典的数据结构与算法进行了全面而细致地讲解,有兴趣的读者可以直接阅读该书.根据个人的学习进度,本文当前只摘取和总结了书中的部分内容,后续会逐步更新. 二.目录 基本数据结构 用Python实现的数据结构与算法:堆…
本文实例讲述了Python实现的数据结构与算法之队列.分享给大家供大家参考.具体分析如下: 一.概述 队列(Queue)是一种先进先出(FIFO)的线性数据结构,插入操作在队尾(rear)进行,删除操作在队首(front)进行. 二.ADT 队列ADT(抽象数据类型)一般提供以下接口: ① Queue() 创建队列② enqueue(item) 向队尾插入项③ dequeue() 返回队首的项,并从队列中删除该项④ empty() 判断队列是否为空⑤ size() 返回队列中项的个数 队列操作的…
python 排序算法总结及实例详解 这篇文章主要介绍了python排序算法总结及实例详解的相关资料,需要的朋友可以参考下 总结了一下常见集中排序的算法 排序算法总结及实例详解"> 归并排序 归并排序也称合并排序,是分治法的典型应用.分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并. 具体的归并排序就是,将一组无序数按n/2递归分解成只有一个元素的子项,一个元素就是已经排好序的了.然后将这些有序的子元素进行合并. 合并的过程就是 对 两个已经排好序的子序列,先选取两个子序列…
python中日志logging模块的性能及多进程详解 使用Python来写后台任务时,时常需要使用输出日志来记录程序运行的状态,并在发生错误时将错误的详细信息保存下来,以别调试和分析.Python的logging模块就是这种情况下的好帮手.本文就介绍了python中日志logging模块性能及多进程的相关资料,需要的朋友可以参考下. Java 中最通用的日志模块莫过于 Log4j 了,在 python 中,也自带了 logging 模块,该模块的用法其实和 Log4j 类似.日志是记录操作的一…
0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 数据结构图文解析之:树的简介及二叉排序树C++模板实现. 数据结构图文解析之:AVL树详解及C++模板实现 数据结构图文解析之:二叉堆详解及C++模板实现 数据结构图文解析之:哈夫曼树与哈夫曼编码详解及C++模板实现 1. 队列简介 1.1 队列的特点 队列(Queue)与栈一样,是一种线性存储结构…
# -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. Hset 命令用于为哈希表中的字段赋值 .如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作.如果字段已经存在于哈希表中,旧值将被覆盖.如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 . 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 . print r.hset(name="name&…
SSD(single shot multibox detector)算法及Caffe代码详解 https://blog.csdn.net/u014380165/article/details/72824889 其中caffe中的特殊层的解释 http://caffe.berkeleyvision.org/tutorial/layers.html…
Python中第三方库Requests库的高级用法详解 虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好.它已经不适合现在的时代,不适合现代的互联网了.而Requests的诞生让我们有了更好的选择.本文就介绍了Python中第三方库Requests库的高级用法. 一.Requests库的安装 利用 pip 安装,如果你安装了pip包(一款Python包管理工具,不知道可以百度哟),或者集成环境,比如Python(x,y)或者a…
写在前面的话:关于数据结构与算法讲解的书籍很多,但是用python语言去实现的不是很多,最近有幸看到一本这样的书籍,由Brad Miller and David Ranum编写的<Problem Solving with Algorithms and Data Structures Using Python>,地址为:http://interactivepython.org/runestone/static/pythonds/index.html是英文的,写的不错,里面代码的实现也很详细,很多…
少年,不知道你好记不记得第三篇文章讲python内建数据结构的方法及其时间复杂度时里面关于dict与set的时间复杂度[为何访问元素为O(1)]原理我说后面讲吗?其实就是这篇文章讲啦. 目录: 一:Hash的定义 二:dict与set的实现原理 三:常用构造hash函数的方法 四:hash碰撞及其解决方法 五:dict的实现 一:Hash的定义 Hash,一般翻译做“散列”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值.[不同的输入可能会散列成相同的输出,所以不可能…
这段时间把<Data Structure and Algorithms with python>以及<Problem Solving with  Algorithms and DataStructures>看完了(图那部分没仔细看,毕业设计开始了,有点忙).现在开始写点总结啦,主要顺序按照是problem solving那本书的,感觉这本条理更加清晰简单,而另一本相对杂乱些,不过其代码写的更pythonic一些.[github地址,包含了那两本书带笔记版以及下面零的代码] 这作为第…
前面分别通过C和C++实现了弗洛伊德算法,本文介绍弗洛伊德算法的Java实现. 目录 1. 弗洛伊德算法介绍 2. 弗洛伊德算法图解 3. 弗洛伊德算法的代码说明 4. 弗洛伊德算法的源码 转载请注明出处:http://www.cnblogs.com/skywang12345/ 更多内容:数据结构与算法系列 目录 弗洛伊德算法介绍 和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法.该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计…
本章是弗洛伊德算法的C++实现. 目录 1. 弗洛伊德算法介绍 2. 弗洛伊德算法图解 3. 弗洛伊德算法的代码说明 4. 弗洛伊德算法的源码 转载请注明出处:http://www.cnblogs.com/skywang12345/ 更多内容:数据结构与算法系列 目录 弗洛伊德算法介绍 和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法.该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名. 基本思想…
本章是迪杰斯特拉算法的C++实现. 目录 1. 迪杰斯特拉算法介绍 2. 迪杰斯特拉算法图解 3. 迪杰斯特拉算法的代码说明 4. 迪杰斯特拉算法的源码 转载请注明出处:http://www.cnblogs.com/skywang12345/ 更多内容:数据结构与算法系列 目录 迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本思想 通过Dijk…
前面分别通过C和C++实现了普里姆,本文介绍普里姆的Java实现. 目录 1. 普里姆算法介绍 2. 普里姆算法图解 3. 普里姆算法的代码说明 4. 普里姆算法的源码 转载请注明出处:http://www.cnblogs.com/skywang12345/ 更多内容:数据结构与算法系列 目录 普里姆算法介绍 普里姆(Prim)算法,是用来求加权连通图的最小生成树的算法. 基本思想 对于图G而言,V是所有顶点的集合:现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放G的最…
本章是普里姆算法的C++实现. 目录 1. 普里姆算法介绍 2. 普里姆算法图解 3. 普里姆算法的代码说明 4. 普里姆算法的源码 转载请注明出处:http://www.cnblogs.com/skywang12345/ 更多内容:数据结构与算法系列 目录 普里姆算法介绍 普里姆(Prim)算法,是用来求加权连通图的最小生成树的算法. 基本思想 对于图G而言,V是所有顶点的集合:现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放G的最小生成树中的边. 从所有uЄU,vЄ…
前面分别通过C和C++实现了克鲁斯卡尔,本文介绍克鲁斯卡尔的Java实现. 目录 1. 最小生成树 2. 克鲁斯卡尔算法介绍 3. 克鲁斯卡尔算法图解 4. 克鲁斯卡尔算法分析 5. 克鲁斯卡尔算法的代码说明 6. 克鲁斯卡尔算法的源码 转载请注明出处:http://www.cnblogs.com/skywang12345/ 更多内容:数据结构与算法系列 目录 最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的…
本章是克鲁斯卡尔算法的C++实现. 目录 1. 最小生成树 2. 克鲁斯卡尔算法介绍 3. 克鲁斯卡尔算法图解 4. 克鲁斯卡尔算法分析 5. 克鲁斯卡尔算法的代码说明 6. 克鲁斯卡尔算法的源码 转载请注明出处:http://www.cnblogs.com/skywang12345/ 更多内容:数据结构与算法系列 目录 最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的…
一.前言 在学习The Apriori algorithm算法时,参考了多篇博客和一篇论文,尽管这些都是很优秀的文章,但是并没有一篇文章详解了算法的整个流程,故整理多篇文章,并加入自己的一些注解,有了下面的文章.大部分应该是copy各篇博客和翻译了论文的重要知识. 关联规则的目的在于在一个数据集中找出项之间的关系,也称之为购物蓝分析 (market basket analysis).例如,购买鞋的顾客,有10%的可能也会买袜子,60%的买面包的顾客,也会买牛奶.这其中最有名的例子就是"尿布和啤酒…
random模块详解 一.概述 首先我们看到这个单词是随机的意思,他在python中的主要用于一些随机数,或者需要写一些随机数的代码,下面我们就来整理他的一些用法 二.常用方法 1. random.random() 功能:用于生成一个0到1的随机浮点数 2. random.randint(a,b) 功能:随机返回a到b之间任意一个数,也包括a,b 3. random.randrange(start, stop=None, step=1) 功能:随机返回start到stop,但是不包括stop值…
转自:AI之路 这篇博客主要介绍SSD算法,该算法是最近一年比较优秀的object detection算法,主要特点在于采用了特征融合. 论文:SSD single shot multibox detector论文链接:https://arxiv.org/abs/1512.02325 算法概述: 本文提出的SSD算法是一种直接预测bounding box的坐标和类别的object detection算法,没有生成proposal的过程.针对不同大小的物体检测,传统的做法是将图像转换成不同的大小,…
算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/luomingjun12315/article/details/45555495 sg[i]定义,从i走一步能到达的j的sg[j]以外的最小值,那么从sg函数值为x的状态出发,我们能转移到sg值为0,1,...,x-1的状态 对于某个人来说,0是他的必败态,sg[0] = 0 我们从这个状态出发,用d…
**********************************************************对所学内容的简单汇总******************************************************* 在安装python依赖库时,我们使用pip install 或者python setup.py install. pip 会自己搜索适合的版本,python setup.py 需要下载源码本地安装.但是python setup.py 适合一键打包安装.…
前言 在上一篇博客中,笔者带大家一起探讨了生成器与迭代器的本质原理和使用,本次博客将重点聚焦于生成器对象的send方法. 一.send方法详解  我们知道生成器对象本质上是一个迭代器.但是它比迭代器对象多了一些方法,它们包括send方法,throw方法和close方法等.生成器拥有的这些方法,主要用于外部与生成器对象的交互.我们来看看生成器对象到底比迭代器多了哪些方法: def func(): yield 1 g = func() item_list = [1, 2, 3, "spark&quo…
一.概述 堆栈(Stack)是一种后进先出(LIFO)的线性数据结构,对堆栈的插入和删除操作都只能在栈顶(top)进行. 二.ADT 堆栈ADT(抽象数据类型)一般提供以下接口: Stack() 创建堆栈 push(item) 向栈顶插入项 pop() 返回栈顶的项,并从堆栈中删除该项 clear() 清空堆栈 empty() 判断堆栈是否为空 size() 返回堆栈中项的个数 top() 返回栈顶的项 堆栈操作的示意图如下: 三.Python实现 使用Python的内建类型list列表,可以很…
一.算法 1.算法的时间复杂度 大 O 记法,是描述算法复杂度的符号O(1) 常数复杂度,最快速的算法. 取数组第 1000000 个元素 字典和集合的存取都是 O(1) 数组的存取是 O(1) O(logN) 对数复杂度 假设有一个有序数组,以二分法查找 O(n) 线性复杂度 假设有一个数组,以遍历的方式在其中查找元素 最坏情况是全部过一遍 O(nlogn) 求两个数组交集,其中一个是有序数组 A 数组每一个元素都要在 B 数组中进行查找操作 每次查找如果使用二分法则复杂度是 logN O(N…
目录: 前言 1:栈 1.1:栈的实现 1.2:栈的应用: 1.2.1:检验数学表达式的括号匹配 1.2.2:将十进制数转化为任意进制 1.2.3:后置表达式的生成及其计算 2:队列 2.1:队列的实现 2.2:队列的应用之囚徒问题 3:双端队列 3.1:双端队列的实现 3.2:双端队列的应用之回文检测 4:列表 3.1:链表的实现 前言 线性数据结构有四种:栈(stack),队列(queue),双端队列(deque),列表(list) 线性数据结构就是一群数据的集合,数据的位置和其加入的先后顺…
目录 一:python内部数据类型分类 二:各数据结构 一:python内部数据类型分类 这里有个很重要的东西要先提醒注意一下:原子性数据类型和非原子性数据类型的区别 Python内部数据从某种形式上可以分为两种: 其一是原子性数据类型:int,float,str 其余的是非原子性的(按有序性分): 有序的:list, tuple 无序的:set, dict 那么什么是原子性呢,在第一篇讲赋值语句时有个例子: 赋值语句:x = 6 其实这个过程是建立了一个指向(reference),左边的是指向…