- 博客(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关注的人