- 博客(11)
- 收藏
- 关注
原创 快速排序
一直都想写一篇关于快速排序的博客,但迟迟没有动笔,今天趁着这个机会,将我对于快速排序的认识进行一个总结,希望对阅读到这篇博客的你有所帮助。 说起快速排序,我头脑中的第一反应就是partition操作,因为partition操作是整个快速排序的核心所在。那到底什么是partition操作呢?先来看一张图: partition操作简单地说,就是找到一个元素作为标定点(如图中的5),经过操作后,使
2017-10-25 11:28:34
228
原创 归并排序
归并排序分为自顶向下(递归),和自底向上两种方法。在开始正文之前,先来简单说明一下递归归并排序的基本步骤。简单的说,归并排序只需要四个步骤: 1)以数组中间位置为标杆,将数组分成左右两个子数组。 2)对左子数组进行归并排序。 3)对右子数组进行归并排序。 4)对分别有序的左右子数组进行一次归并操作,归并成一个数组。下面用一个简单的例子来进行说明: 假设要对数组【 3, 1, 7, 5, 4
2017-10-24 17:01:06
254
原创 插入排序
先用一个简单的例子来说明一下插入排序的方法。 假设要对数组|5|1|4|6|进行排序,插入排序的方法为,从第二个元素,即1开始到结尾,每一轮把当前考察的元素放置在它正确的位置上。这么说还是有点抽象,结合例子来理解。 第一轮: 这一轮所要做的事情是把第二个元素即1,放置在合适的位置上。 原:|5|1|4|6| 1)|1|5|4|6| 因为1比5小,所以和5交换了位置,此时前2个元素已经有序
2017-10-07 16:25:25
412
原创 冒泡排序
先用一个简单的例子来说明一下冒泡排序的过程。 假如待排序的数组为|5|4|3|2|1|,我们需要按照从小到大的顺序将这个数组进行排序,那么使用冒泡排序的步骤如下所示: 第一轮: 原:|5|4|3|2|1| 1)|4|5|3|2|1| 5比4大,交换位置 2)|4|3|5|2|1| 5比3大,交换位置 3)|4|3|2|5|1| 5比2大,交换位置 4)|4|3|2|1|5| 5
2017-10-07 15:32:06
210
原创 Cookie 和 Session
什么是Cookie? Cookie是浏览器支持的一种本地存储的键值对,类似与python中的字典。为什么需要Cookie? 首先,http协议是一种无状态协议。无状态请求是指,当用户发送请求给服务器时,服务器不管是谁的请求,直接返回结果。这样的方式,在一些情况下是没有问题的,然而,如果像淘宝,在用户未登录状态下,服务器是会记住用户浏览过哪一些商品的,这时就需要使用Cookie来判别是哪一个用户了
2017-10-06 11:11:34
244
原创 程序与进程的区别
程序是一堆代码和数据,它可以作为目标文件放置在磁盘上,而进程是执行中程序的一个实例。有个比较生动的比喻可以帮助理解,程序相当于剧本,而进程则是话剧。 程序总是运行在某个进程的上下文环境中,根据上下文是否相同可以帮助理解fork函数和execve函数的区别。接下来先来讲一下上下文的含义。操作系统内核会为每一个进程维持一个上下文,上下文就是内核启动一个进程所需要的状态(这些状态包括寄存器,内核栈,用户
2017-10-05 15:29:28
367
原创 选择排序
从今天开始把之前学习过的数据结构和算法复习一下,写下博客当做一种总结。先从最简单的O(n^2)排序算法写起,先讲一下选择排序。 选择排序的思想就是遍历整个数组,假设我们是要从小到大对数组进行排序。那么每次遍历都找到数组中的当前最小元素,然后放置在它的正确位置上。举个例子,假如我们要对[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]这个数组进行排序,第一次遍历时,从十个元素中找到最小的
2017-10-04 12:06:00
159
原创 正则表达式
首先,先来谈一谈用python开发爬虫时为什么需要使用到正则表达式。我们知道,可以使用xpath或者css选择器来提取网页中标签的元素值,例如有一个标签为<p>中国移动13411001111</p> 此时使用xpath或者css选择器能够将“中国移动13411001111”这整个标签中的元素值提取出来,但是,如果只想要提取号码,不要文字,就需要使用正则表达式来处理了。 接下来开始谈一下正则表达式的
2017-10-03 18:00:45
282
原创 关于Unicode编码和UTF-8编码
说到编码,得先从ASCII编码讲起。ASCII编码是由美国人发明,美国的字符不超过255个,所以ASCII编码使用了8bit 即一个字节来存储字符。由于汉字的数量远超255个,所以中国自己发明了一个GB2312编码来表示汉字,一般的汉字使用2个字节,对于一些生僻的汉字则使用更多的字节来表示,当然,GB2313编码是可以兼容ASCII码的。 然后,日本,韩国等等国家也自己发明了一套
2017-10-02 17:02:55
9601
5
转载 爬虫去重策略
1)将访问过的URL存储在数据库中,每次要访问一个URL时,就从数据库中查询该URL是否已经被访问过,这种方法占用内存太大,而且每次访问一个URL都需要到数据库中查询,效率十分低下。2)将访问过的URL存储在set中,可以在O(1)的时间内查询到一个URL是否存在于set中,但是缺点是,占用内存大,比如有1亿条URL,占用的内存是: 1000000000*2byte*50字符/10
2017-10-02 16:37:15
4834
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人