自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

iHippy的专栏

We are hippies, we are happy!

  • 博客(6)
  • 收藏
  • 关注

原创 海量日志,提取出现最多的IP--python实现

看过这篇文章教你如何迅速秒杀掉:99%的海量数据处理面试题,文中的第一道题片石,海量日志数据,提取出某日访问百度次数最多的那个IP。所以本文我用自己的思路实现了这个问题。试想一下,如果日志文件中,所有相同的 IP 都是相邻的,那是不是扫描一遍文件就可以找出数量最多的那个?这便是本文思路。而排序正好是一个令相同 IP 相邻的不错的办法。排序就要作比较,而 IP 是诸如 "188.62.136

2013-05-10 17:14:07 1131

原创 python算法--置换选择排序详细实现

在败者树一文中有提到,如果能一次性归并多个小文件,可以大大减少对文件的读写操作,从而减少 I/O 时间提高排序效率。那如果可以减少分割的小文件的数量呢?如果在不能一次性归并完所有小文件的情况下,如果能减少分割的小文件数量其实也是提高大文件排序的一种办法。这正是这篇文章要介绍的——置换-选择排序。过程如下:假设内存工作区最多可容纳 n 条记录,则从大文件读取 n 条记录到内存工作区。筛选

2013-05-10 15:23:02 1259

原创 python算法--败者树详细实现

对于大文件的排序,常规思路便是:将大文件问个成 n  个小文件,分别对这些小文件利用内部排序(快速排序、堆排序等)算法排成有序。然后再对这些文件进行两两归并,直至归并成一个大的有序文件。这样归并的趟数比较多,读写文件的 I/O 次数就比较多。相对于内存中的运算,对文件的读写操作是特别费时间的。显然一次性归并多个文件而不是两个会大大减少归并的趟数,从而减少对文件的读写操作。如何一次性归并多个

2013-05-10 14:19:15 1733

原创 python数据结构--二叉树建立与遍历

二叉树的实现为非递归实现,遍历方法就写了一个,traversal(self, root), 其实先序遍历、中序遍历和后序遍历的区别就一个,代码注释里有,就是 print root.data, 这句代码的位置的区别,非常简单。完整代码:#!/usr/bin/python# Filename: BTree.pyclass BTNode: def __init__(self, d

2013-05-09 23:18:46 897

原创 python算法--堆排序详细实现

堆排序的时间复杂度也 O(nlog n),而且只需要一个记录大小的辅助空间。对n个元素的序列 {k1, k2, ..., kn},若将此序列看成是一个完全二叉树,若 对所有节点,其关键字均恒小于(或大于)左右孩子的关键字,则称该序列为堆。使用堆排序,无非就是两步:1、建立堆 2、取出堆顶元素之后调整序列为新堆。调整:输出堆顶元素之后,将最后的元素放在堆顶(即k0)的位置,然后从

2013-05-09 22:53:40 606

原创 python算法--快速排序详细实现

快速排序的基本思想就是:分割。即以序列中的一个关键字(第一个,或者最后一个,或者任意一个)作为枢轴,将整个序列分割成两部分----比枢轴大的一部分和比枢轴小的一部分。然后再分别对这两部分(不包括枢轴)进行递归运算,直到序列有序。        如何划分?        令序列中第一个元素的下标为first,最后一个为last,枢轴为pivot, 序列为array。 这样从两端开始,让 ar

2013-05-06 10:03:01 729

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除