05 2018 档案

摘要:希尔排序( Shell sort) 插入排序的改进版本,其核心思想是将原数据集合分割成若干个子序列,然后再对子序列分别进行直接插入排序,使子序列基本有序,最后再对全体记录进行一次直接插入排序。 我的面向人类的理解:挑选间隔为k的数进行排序,然后不断缩小k,最终降到1,此时相当于插入排序。 1.算法描 阅读全文
posted @ 2018-05-31 23:44 kumata 阅读(270) 评论(0) 推荐(0)
摘要:插入排序( Insert sort) 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入; 由于不需要全部都比较完,所以排序速度优于冒泡和选择排序。 #插入排序就像是斗地主摸牌 1.算法描述: 2.算法属性: 时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:稳定 阅读全文
posted @ 2018-05-31 23:18 kumata 阅读(227) 评论(0) 推荐(0)
摘要:选择排序( Selection sort) 1.算法描述: 通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录进行交换。 对尚未完成排序的所有元素,从头到尾比一遍,记录下最小的那个元素的下标,也就是该元素的位置, 把该元素交换到当前遍历的最前面。 阅读全文
posted @ 2018-05-31 22:21 kumata 阅读(210) 评论(0) 推荐(0)
摘要:冒泡排序(Bubble sort) 两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录为止。 1.算法描述: 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤, 阅读全文
posted @ 2018-05-30 23:14 kumata 阅读(356) 评论(0) 推荐(0)
摘要:算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较 阅读全文
posted @ 2018-05-30 21:36 kumata 阅读(280) 评论(0) 推荐(0)
摘要:查找(Search) 描述顺序查找与二分法(折半搜索)的概念以及用python实现其查找流程 笔记中二分法记录简单的检索方法,更详细方法传送门:二分法查找的python案例 顺序查找 算法原理:遍历数据元素 查找表类型:无序表查找,也就是数据不sort的线性查找,遍历数据元素 算法分析: 由此最终算 阅读全文
posted @ 2018-05-30 20:39 kumata 阅读(11062) 评论(0) 推荐(0)
摘要:递归(Recorsion) 递归算法里面最经典的两个非fibonacci和hanio莫属了 今天练习就这两数列用python代码实现 斐波那契数列 汉诺塔 阅读全文
posted @ 2018-05-29 21:47 kumata 阅读(539) 评论(0) 推荐(0)
摘要:定义: =号浅拷贝:在Python中对象的赋值其实就是对象的引用。copy了之后两个仍然是同一个东西。那么他们内部的元素自然也是一样的,对其中一个进行修改,另一个也会跟着变> copy()浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其 阅读全文
posted @ 2018-05-28 11:47 kumata 阅读(339) 评论(0) 推荐(0)
摘要:#匹配电话号码(前面3/4-后面7-8): '\d{3,4}-\d{7,8}' #匹配QQ号(从号码1000开始第一位不能为0): '[1,9][0,9]{4}' #匹配身份证(15位数或者18位,考虑最后一位X): '\d{15} | \d{18} | \d{14}X | \d{17}X' #匹配账号是否合法(以字母开头、允许字母数字下划线、包括5-16字符): '... 阅读全文
posted @ 2018-05-28 11:22 kumata 阅读(278) 评论(0) 推荐(0)
摘要:简介 引用计数(python默认):记录该对象当前被引用的次数,每当新的引用指向该对象时,它的引用计数ob_ref加1,每当该对象的引用失效时计数ob_ref减1,一旦对象的引用计数为0,该对象立即被回收 标记清除:第一段给所有活动对象标记,第二段清除非活动对象 分代回收:python将内存根据对象 阅读全文
posted @ 2018-05-28 11:16 kumata 阅读(1842) 评论(0) 推荐(0)
摘要:概述: 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 为了 阅读全文
posted @ 2018-05-28 00:14 kumata 阅读(320) 评论(0) 推荐(0)
摘要:数组列表:动态数组(Array List) 简介: 最基础简单的数据结构、最大的优点就是支持随机访问(O(1)),但是增加和删除操作效率就低一些(平均时间复杂度O(n)) 动态数组也称数组列表,在python中一般为List 由于Python包装好了很多算法上的现成的数组操作函数,通过学习对其内部进 阅读全文
posted @ 2018-05-27 23:41 kumata 阅读(16359) 评论(0) 推荐(0)
摘要:简介 Python 字典(Dictionary) fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。 语法 fromkeys()方法语法: dict.fromkeys(seq[, value]) 参数 seq -- 字典键值列表 valu 阅读全文
posted @ 2018-05-26 23:00 kumata 阅读(4588) 评论(0) 推荐(0)
摘要:zip()函数的定义 从参数中的多个迭代器取元素组合成一个新的迭代器; 返回:返回一个zip对象,其内部元素为元组;可以转化为列表或元组; 传入参数:元组、列表、字典等迭代器。 zip()函数的用法 当zip()函数中只有一个参数时 zip(iterable)从iterable中依次取一个元祖,组成 阅读全文
posted @ 2018-05-26 15:42 kumata 阅读(318) 评论(0) 推荐(0)
摘要:算法 ( Algorithm ) 一、功能: 有限时间内解决问题的一系列清晰指令 二、效率 空间 时间 三、目标 能够识别程序要求的功能以解决当前任务设计 能够高效解决此任务的数据结构与算法 评价该方案的效率和正确性 算法分析 运行时间 (时间复杂度) 可以看出,运行时间的效率从高到低的排序为: C 阅读全文
posted @ 2018-05-26 14:11 kumata 阅读(504) 评论(0) 推荐(0)
摘要:学习笔记内容简介: 获取对象属性和方法的函数: type(): 判断对象类型 isinstance() : 判断class的类型 dir() : 获得一个对象的所有属性和方法 把属性和方法列出来是不够的,配合以下函数,我们可以直接操作一个对象的状态: hasdttr():测试是否有该属性 setat 阅读全文
posted @ 2018-05-24 23:32 kumata 阅读(1417) 评论(0) 推荐(0)
摘要:继承与多态简介: 继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写。 动态语言的鸭子类型特点决定了继承不像静态语言那样是必须的。 继承 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的cl 阅读全文
posted @ 2018-05-24 17:58 kumata 阅读(834) 评论(0) 推荐(0)
摘要:首先记录下面向对象的名词: 对象:python万物皆对象,程序设计的东西在对象上体现。 类:具有相同属性和行为的对象的集合。 消息:各个对象之间通过消息相互联系。 方法:对象功能实现的过程。 封装:把对象的属性和行为(方法)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。大白话讲就是,把不想告 阅读全文
posted @ 2018-05-24 16:30 kumata 阅读(286) 评论(0) 推荐(0)
摘要:爬虫项目爬取猫眼电影TOP100电影信息 项目内容来自:https://github.com/Germey/MaoYan/blob/master/spider.py 由于其中需要爬取的包含电影名字、电影海报图片、演员、上映时间等众多信息,正则表达式代码较为复杂 在parse_one_page(htm 阅读全文
posted @ 2018-05-23 21:17 kumata 阅读(1065) 评论(0) 推荐(0)
摘要:Decorator #装饰器 装饰器是什么?顾名思义,就是用来“装饰”的: 装饰器是一个很著名的设计模式,(也和开闭原则有关)经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继 阅读全文
posted @ 2018-05-23 15:44 kumata 阅读(235) 评论(0) 推荐(0)
摘要:#正则表达式内容非常多,网上的学习资源也是目不暇接,我从中筛选学习并且整理出以下 的学习笔记 一、正则表达式匹配过程: 1.依次拿出表达式和文本中的字符比较 2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败 3.如果表达式中有量词或边界,这个过程会稍微有一些不同 二、语法规则 阅读全文
posted @ 2018-05-23 00:31 kumata 阅读(471) 评论(0) 推荐(0)
摘要:一、在本地新建一个文件夹,作为本地仓库,如“BigProjet”。在该文件夹打开git bash,进入到该文件夹目录下 二、将本地仓库初始化 三、将项目从github或者服务器上克隆下来, 使用命令: url为项目服务器地址或github地址,例如: 四、未修改项目前,查看项目状态,命令: 五、修改 阅读全文
posted @ 2018-05-19 18:23 kumata 阅读(28872) 评论(0) 推荐(1)
摘要:闭包(Closure) 在一个函数内部定义另一个函数,然后内部函数用到外部函数的变量,把内部函数以及用到的外部变量,合称闭包。 首先复习一下 命名空间与作用域 我们可以把命名空间看做一个大型的字典类型(Dict),里面包含了所有变量的名字和值的映射关系。在 Python 中,作用域实际上可以看做是“ 阅读全文
posted @ 2018-05-19 11:45 kumata 阅读(234) 评论(0) 推荐(0)
摘要:排序函数介绍:sort()和sorted()都属于Python list的排序方法 区别:sort()属于永久性排列,直接改变该list; sorted属于暂时性排列,会产生一个新的序列。 以下对常用的sorted进行介绍: python 内置的sorted()函数可以对一个list进行排序: 既然 阅读全文
posted @ 2018-05-18 23:15 kumata 阅读(22288) 评论(0) 推荐(1)
摘要:笔记中函数简介: map函数:遍历序列,对序列中每个元素进行操作,最终获取新的序列。 reduce函数:对于序列内所有元素进行累计操作。 filter函数:对于序列中的元素进行筛选,最终获取符合条件的序列。 Tips:这三条函数经常与lambda关键字搭配使用。 一、map() #map在这里我理解 阅读全文
posted @ 2018-05-18 15:31 kumata 阅读(435) 评论(0) 推荐(0)
摘要:在了解Python的数据结构时,容器(container)、可迭代对象(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,这篇笔记将这些概念以及它们之 阅读全文
posted @ 2018-05-18 11:48 kumata 阅读(457) 评论(0) 推荐(0)
摘要:List Comprehensions #列表生成式:Python内置的非常简单却强大的可以用来创建list的生成式。 阅读全文
posted @ 2018-05-18 11:11 kumata 阅读(188) 评论(0) 推荐(0)
摘要:split() / join() 拆分和组合 replace() 替换 布局center() : 前后留空 ljust():后面留空 rjust():前面留空 eval(): 将字符串处理为可以运算的类型 format() :格式化字符串 (New style in Python 3.6) form 阅读全文
posted @ 2018-05-17 17:09 kumata 阅读(2447) 评论(0) 推荐(0)
摘要:学习笔记内容概要 进程查看的命令:top,ps,pstree 进程管理的命令:kill,nice,renice 查看进程: 一、top工具 top 工具是我们常用的一个查看工具,能实时的查看我们系统的一些关键信息的变化。 我们看到 top 显示的第一排, 内容以及解释 top 表示当前程序的名称 1 阅读全文
posted @ 2018-05-10 10:59 kumata 阅读(605) 评论(0) 推荐(0)
摘要:Linux进程概念 一、实验介绍1.1 实验内容Linux 中也难免遇到某个程序无响应的情况,可以通过一些命令来帮助我们让系统能够更流畅的运行。 而在此之前,我们需要对进程的基础知识有一定的了解,才能更好、更有效率的使用Linux 提供的工具。 1.2实验知识点 进程与程序 进程的衍生 工作管理 二 阅读全文
posted @ 2018-05-09 23:04 kumata 阅读(1121) 评论(0) 推荐(0)
摘要:先总结一下安装软件常用命令: 学习笔记介绍: Ubuntu 下软件安装的几种方式,及 apt,dpkg 工具的使用。通常 Linux 上的软件安装主要有四种方式: 在线安装 从磁盘安装deb软件包 从二进制软件包安装 从源代码编译安装 使用apt APT是Advance Packaging Tool 阅读全文
posted @ 2018-05-09 22:11 kumata 阅读(14650) 评论(0) 推荐(1)
摘要:基本语法一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。 一、选择:| | 竖直分隔符表示选择,例如"boy|girl"可以匹配"boy"或者"girl" 二、数量限定:+ ? * +表示前面的字符必须出现至少一次(1次或多次),例如,"goo+ 阅读全文
posted @ 2018-05-09 15:36 kumata 阅读(1352) 评论(0) 推荐(0)
摘要:git教程:git详解、gitbook # 首次上传步骤 首先在工程文件位置处右键git bash here 本地创建ssh key $ ssh-keygen -t rsa -C "your_email@youremail.com" 为了验证是否成功,在git bash下输入: $ ssh -T g 阅读全文
posted @ 2018-05-08 23:58 kumata 阅读(247) 评论(0) 推荐(0)
摘要:echo命令:用于字符串的输出 $echo string 1.打印普通字符串 2.显示转义字符 3.显示变量 4.显示换行 5.显示不换行 转义 \a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至 阅读全文
posted @ 2018-05-07 11:04 kumata 阅读(13742) 评论(0) 推荐(1)
摘要:crontab 简介 crontab 命令常见于 Unix 和类 Unix 的操作系统之中(Linux 就属于类 Unix 操作系统),用于设置周期性被执行的指令。 crontab 命令从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守 阅读全文
posted @ 2018-05-06 11:42 kumata 阅读(511) 评论(0) 推荐(0)
摘要:笔记内容如下: 1、内建命令与外部命令之分2、help , man , info命令的使用以及区别 内建命令与外部命令 有一些查看帮助的工具在内建命令与外建命令上是有区别对待的。 内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码 阅读全文
posted @ 2018-05-05 10:34 kumata 阅读(26478) 评论(0) 推荐(0)
摘要:学习内容介绍:Linux 上常用的压缩/解压工具,介绍了zip、rar、tar的使用。 先总结一下常用命令: zip: 打包 :zip something.zip something (目录请加 -r 参数)解包:unzip something.zip指定路径:-d 参数 tar:打包:tar -z 阅读全文
posted @ 2018-05-04 20:29 kumata 阅读(473) 评论(0) 推荐(0)
摘要:学习内容来源: 实验楼链接: https://www.shiyanlou.com/ 与搜索相关的命令常用的有 whereis,which,find 和 locate 。 whereis 简单快速 你会看到它找到了三个路径,两个可执行文件路径和一个 man 在线帮助文件所在路径,这个搜索很快,因为它并 阅读全文
posted @ 2018-05-04 11:44 kumata 阅读(440) 评论(0) 推荐(0)
摘要:lambda表达式: 通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。 在Python中,对匿名函数提供了有限支持。以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外 阅读全文
posted @ 2018-05-02 22:17 kumata 阅读(1068) 评论(0) 推荐(0)