E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
编程珠玑
对一千万条数据进行排序---
编程珠玑
第二版 第一章
本书第一章提出了一个看似简单的问题,有最多1000万条不同的整型数据存在于硬盘的文件中,如何在1M内存的情况下对其进行尽可能快的排序。 每个数字用4byte,1M即可存储250 000个数据,显然,只要每次对250 000个数据排序,写入到文件中即可,重复40次。 那么如何选出每次遍历的二十五万条数据呢?有如下两个策略: 1、对一千万条数据遍历40次,第i次遍历时,判断数是否属于[i*250
·
2015-10-31 19:45
编程珠玑
编程珠玑
-位排序(bitsort)
在《
编程珠玑
》一书上,有一题是将一堆不重复的数进行排序,这些数的值大小位于[0, 10000000). 然后作者在书后给出的答案确实很精辟,利用位排序将这个问题轻而易举的解决了。
·
2015-10-31 19:47
sort
编程珠玑
第三章
第三章的总的原则: 1.将重复性代码改到数组中,使用最简单的数据结构---数组来表示一段冗长的相类似的代码往往可以达到最佳效果 2.封装复杂的结构时,使用抽象的术语对她进行定义,并将那些操作表示成一个类。 3.尽可能地使用高级工具。超文本,名称-值对,电子表格,数据库 4.让数据去构造程序。 习题1代码实现: #include <stdio.h> int income[
·
2015-10-31 18:48
编程珠玑
编程珠玑
第二章
(1)对于有足够内存的情况,完全可以采用位图存储的方法,详细内容看《
编程珠玑
》第一章。 (2)Ed Reingold 给出了另外一种解法。 &n
·
2015-10-31 18:47
编程珠玑
编程珠玑
第一章
整个程序的思想就是: 1.每个整数有32位,那么它就可以表示32个数,分别对应每bit位为1. 2.然后把10000000个
·
2015-10-31 18:46
编程珠玑
LeetCode Rotate Array 旋转数组
原地旋转数组可以见
编程珠玑
,在JDK代码中也可以找到(Collections.rotate),提供了两种方式一种是做三次reverse,还有一种则是进行遍历替换。
·
2015-10-31 18:41
LeetCode
C
编程珠玑
1.排序 普通的归并排序,位图解决方案。(To walk faster,simple ,less components, easy to maintain and strong.) 2.二分查找,很好很强大。 3.转动(一个临时变量,递归)。 4.不得不承认,数组是一个不错的数据结构。 5.问题越一般化,解决起来就越容易。 6.将重复性代码写到数组中去,封装复杂的结构,尽可能地使用高级
·
2015-10-31 17:27
编程珠玑
一个很nice的随机数列产生函数
在
编程珠玑
里面看到的,原来一直使用的是下面这种方法。
·
2015-10-31 17:30
随机数
【读后感】
编程珠玑
第九章 代码调优
引子: 有些程序员过于关注程序的效率;由于太在乎细小的“优化”,他们编写出的程序过于竞标,难以维护。而另外一下程序员很少关注程序的效率;他们编写的程序有着清晰漂亮的结构,但效率极低以至于毫无用处。优秀的程序员将程序的效率难入整体考虑之中:效率只是软件中的众多问题之一,但有时候也很重要。 9.1 典型的故事 问题中到了Van Wyk将一个300
·
2015-10-31 17:29
编程珠玑
【读后感】
编程珠玑
(第二版)第八章
第八章 算法设计技术 这一章主要说明一个问题,一个看似复杂的算法有时可以极大的缩短程序的运行时间。 8.1 问题及简单算法 一个数组,有正有负,求出和最大的序列的值。比如1 -2 3 5,答案就是8。 一道很经典的动态规划题,出处是不是在这里呀? 一个简单的算法,三层循环,枚举起点和终点,然后从起点开始加到终点,最后更新max值。看似简单,但是n三次方的复杂度是不能够接受
·
2015-10-31 17:21
编程珠玑
【读后感】
编程珠玑
(第二版)第七章
第七章 粗略估计 序言 作者在这一章主要讲解了如何粗略估计,并强调了粗略估计的重要性。 文中提到“密西西比河一天流出多少水?”“我的回答大致如下,我估算出河的出口大约有1英里宽,20英尺深(1/250英里),我猜测河水的流速是每小时5英里(120英里/天),这样 1英里×1/250英里×120英里/天 = 1/2英里3(3次方)/天“
·
2015-10-31 17:20
编程珠玑
【读后感】
编程珠玑
(第二版)第六章
第六章 程序性能分析 这篇文章主要介绍了如何能够提高程序的性能,作者强调性能的重要性。“例如,我们中的每个人都会认可一个程序的运行速度是另一个程序的2.5倍,但是当讨论用户界面时,则常常会陷入个人喜好之争。” 作者举出了1985年1月,SIAM journal on Scientific and Statistical Computing第6卷第1期的第85页~第103页刊登
·
2015-10-31 17:19
编程珠玑
【读后感】
编程珠玑
(第二版)第五章
第五章 编程小事主要讲述了在编写完代码后,我们需要进行测试,jon提倡我们在条件允许的情况下可以使用一些简单的printf,assert等来测试我们的代码。测试过程,一开始从手动测试,到机器测试(编写一些简单的循环语句,保证每一个用例都被测试过)断言的艺术:使用断言,就是在检查我们都信以为真的东西是不是真的可靠。这给我很大启发,对一个二分查找来说,在开始查找前,先确定该数组是否是有序的。我很惊讶,
·
2015-10-31 17:18
编程珠玑
【资源】
编程珠玑
I 源码
转自http://www.itpub.net/thread-563423-1-1.html
编程珠玑
源码(作一个备份)Programming Pearls主页打不开,用搜索引擎查到这个地址Code from
·
2015-10-31 17:18
编程珠玑
【读后感】
编程珠玑
(第二版)第八章
第八章 算法设计技术 这一章主要说明一个问题,一个看似复杂的算法有时可以极大的缩短程序的运行时间。 8.1 问题及简单算法 一个数组,有正有负,求出和最大的序列的值。比如1 -2 3 5,答案就是8。 一道很经典的动态规划题,出处是不是在这里呀? 一个简单的算法,三层循环,枚举起点和终点,然后从起点开始加到终点,最后更新max值。看似简单,但是n三次方的复杂度是
·
2015-10-31 17:42
编程珠玑
【读后感】
编程珠玑
(第二版)第六章
第六章 程序性能分析 这篇文章主要介绍了如何能够提高程序的性能,作者强调性能的重要性。“例如,我们中的每个人都会认可一个程序的运行速度是另一个程序的2.5倍,但是当讨论用户界面时,则常常会陷入个人喜好之争。” 作者举出了1985年1月,SIAM journal on Scientific and Statistical Computing第6卷第1期的第85页~第103
·
2015-10-31 17:40
编程珠玑
【读后感】
编程珠玑
(第二版)第七章
第七章 粗略估计 序言 作者在这一章主要讲解了如何粗略估计,并强调了粗略估计的重要性。 文中提到“密西西比河一天流出多少水?”“我的回答大致如下,我估算出河的出口大约有1英里宽,20英尺深(1/250英里),我猜测河水的流速是每小时5英里(120英里/天),这样 1英里×1/250英里×120英里/天 = 1/2英里3(3次方)/
·
2015-10-31 17:40
编程珠玑
【读后感】
编程珠玑
(第二版)第五章
第五章 编程小事 主要讲述了在编写完代码后,我们需要进行测试, jon提倡我们在条件允许的情况下可以使用一些简单的printf,assert等来测试我们的代码。 测试过程,一开始从手动测试,到机器测试(编写一些简单的循环语句,保证每一个用例都被测试过) 断言的艺术: 使用断言,就是在检查我们都信以为真的东西是不是真的可靠。这给我很大启发,对一个二分查找来说,在开始查找前,先确定该数组是
·
2015-10-31 17:39
编程珠玑
【资源】
编程珠玑
I 源码
转自 http://www.itpub.net/thread-563423-1-1.html
编程珠玑
源码(作一个备份) Programming Pearls主页打不开,用搜索引擎查到这个地址
·
2015-10-31 17:38
编程珠玑
编程珠玑
总结
一、排序 1、应用 a、一些程序需要有序的输出,二分查找之类的程序需要一个有序的输入。 b、收集相同项:使用排序来收集序列中相同的项,后缀数组收集相同的单词。 2、算法 a、插入排序:O(n^2)的最坏时间,如果给一个大致有序的数组进行排序,则只需要O(n)时间,是稳定的。 b、快速排序:最优时间O(nlogn),最坏情况O(n^2)时间O(n)空间 c、堆排序:任何情况都是O(nl
·
2015-10-31 16:06
编程珠玑
如何写出优美的代码(三)
(该文思想来自于经典著作《
编程珠玑
》) 看到有朋友评论说,美的代码不仅仅是规范上面的事。规范的代码可以让我们减少Debug的难度,增加可扩展性。
·
2015-10-31 16:38
代码
求最大子数组
自己先后分别在《编程之美——微软面试心得》和《
编程珠玑
》中看到了这样的一个经典的例子:在线性时间内求向量的任何连续子向量中的最大和。
·
2015-10-31 14:52
数组
【读后感】
编程珠玑
(第二版) 第一章 开篇
第一章包含在第一部分里面,第一部分总共有五章: 第一章 开篇 第二章 啊哈!算法 第三章 数据决定程序结构 第四章 编写正确的程序 第五章 编程小事 第一章 开篇 这一章揭示了本书的中心思想: 对实例研究的深入思考不仅很有趣,而且可以获得实际的益处。 1.1 一次友好的对话 一位程序员问Jon:怎样给一个磁盘文件排序?Jon就
·
2015-10-31 12:06
编程珠玑
【读后感】
编程珠玑
(第二版)前言
从今天开始,我准备完成
编程珠玑
的读书笔记了,读书当然要从前言开始。我这人有个习惯,前言总是要看两遍,甚至很多遍,总觉得前言写的好的才算是好书,如果看完前言都不知道在干什么,会有点扫兴吧。
·
2015-10-31 12:05
编程珠玑
编程珠玑
第一章的算法,Java实现,通俗易懂
该算法也就是所谓的位图算法,用一个int表示32位,也就是实际值为1~32的数. 按照书里说的, 该算法只适合内存有限,而磁盘和时间不限,且数字在1~MAX之间不重复的排序. 1 package demo1; 2 3 /** 4 * Created with IntelliJ IDEA. 5 * User: wsyang 6 * Date: 13-11-3
·
2015-10-31 11:23
java实现
编程珠玑
第一章、第二章
利用位图排序 问题:一个最多包含n个正整数的文件,每个数都小于n,n = 1000 0000。文件中的正整数没有重复的,请按升序排列这些整数。可用内存空间只有1MB左右,运行时间在10秒左右。 解决方法:使用一个具有1000万个位的为序列表示这个文件中的所有整数。当且仅当整数 i 在文件中时,第 i 位为1。用C++具体实
·
2015-10-31 11:08
编程珠玑
向量的旋转算法---
编程珠玑
读书笔记。
最近在看
编程珠玑
这本书。觉得很不错。 第一章介绍的是位图算法。比较简单。就不记笔记了!呵呵偷个懒。
·
2015-10-31 11:20
读书笔记
编程珠玑
Column14中堆排序的实现
最关键的函数: 1 inline void swap(int *arr,int i,int j) 2 { 3 if(i==j) 4 return; 5 arr[i]=arr[i]^arr[j]; 6 arr[j]=arr[i]^arr[j]; 7 arr[i]=arr[i]^arr[j]; 8 } 9 10
·
2015-10-31 11:27
column
编程珠玑
Column12中从n个数中产生随机的m个数
方法1: 1 void rand1(int n,int m) 2 { 3 for(int i=0;i<n;++i) 4 if(rand()%(n-i)<m)//用n-i比再定义一个num记录还剩几个更好 5 { 6 cout<<i<<" "; 7
·
2015-10-31 11:27
column
[
编程珠玑
]如何使用位逻辑来实现位向量
编程珠玑
开篇的一道题目是这样的: 如何使用位逻辑运算(如与、或、移位)来实现位向量? 一.何为位向量?
·
2015-10-31 11:32
编程珠玑
罗列的书单
专业技术类: 《Android 4 高级编程》 实体书有 《疯狂的Android讲义》 实体书有 《编程之美》 实体书有 《
编程珠玑
》 实体书有 《数据结构
·
2015-10-31 10:01
书
编程珠玑
里随机数产生算法
这个需求应该是很常见的吧,需要从 0 到 n 之间选 k 个不重复的数组成一个序列。我最早遇到这个问题是在给校ACM比赛出题时,需要随机产生一些测试数据,当时我想的是用一个辅助数组记录之前已经产生的随机数,如果当前产生的随机数已经出现过就再重新随机。显然这样的实现效率是很低的,设想从10000个数中随机产生10000个数的序列,当前面9999个数已经确定了时,最后一个数被随机到的概率是 0.000
·
2015-10-31 10:58
编程珠玑
二分查找
参见
编程珠玑
chap4 chap9,和编程之美3.3 给定一个有序(不降序)数组arr,, 求任意一个i使得arr[i]等于t,不存在返回-1
·
2015-10-31 09:03
二分查找
编程玑珠
标题之所以叫做“编程玑珠”而不是“
编程珠玑
”,是我怕搜索这本书的网友产生误会,但我要表达的意思是一致的。
·
2015-10-31 09:08
编程
求最大和连续子向量问题的算法分析
1 问题描述 这是从《
编程珠玑
(第 2 版)》的第 8 章“算法设计技术”中看到的一个问题。
·
2015-10-31 09:34
算法
位向量
看了
编程珠玑
第一章练习题第二题,关于位向量使用逻辑运算符实现的问题。 首先,位向量不明白: 位向量是一种高效的整数结构,每一个32位的整数通过设置或清除它的某一位,可以保存32个数。
·
2015-10-31 09:01
左旋转字符串 【微软面试100题 第二十六题】
参考资料:剑指offer第42题、
编程珠玑
第二章 题目分析: 方法1 临时空间法:将前i个元素先复制到临时空间中,然后将余下的n-i个元素前移i个位置,最后再把临时空间中的元素放到余下的位置。
·
2015-10-31 08:51
字符串
趣题:古北水镇的造价有多少?
记得《
编程珠玑
》中有一道题目讲述的是如何估计密西西比河一年的出水量,很有意思。
·
2015-10-31 08:43
等快递无聊--旋转字符串
等快递无聊--旋转字符串 真是个无语的周末,昨天下午等了几个小时的快递,买了两本书《代码大全》和《
编程珠玑
》,还有别人的衣服,今天一大早又跑到公司来等快递,又是别人的衣服,还没有到呢,做专业的代购真是无语
·
2015-10-30 15:04
字符串
编程珠玑
学习笔记三 第二章总结
第二章开头提出了三个非常好的问题: 1.给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数。 在内存足够的情况下,可以用位图来解决这个问题,位图中标记为0对应的数就是所要找的。 当内存不足时,此时采用分治的思想: 按最高位(也可按低位)的值对所有整数分类,高位为0的一组,记为A,高位为1的一组,记为
·
2015-10-30 15:02
学习笔记
编程珠玑
学习笔记二 第一章总结
第一章比较好的问题总结如下: 1.如何生成位于0到n-1之间的k个不同的随机顺序的随机整数? 这在前一篇文章中已经给出了解答 2.若代码需要1.25MB的空间,而系统只能提供1MB的空间,该如何处理? 思路:此时可分别两次读入数据来处理。 3.每个整数不只出现一次,而是最多出现10次,如何处理? 思路:前面的问题每个数字只出现一次,所以选择用一个bit位来表示这个数字是否出现; &n
·
2015-10-30 15:01
学习笔记
编程珠玑
学习笔记一 python实现
最近打算研究一下《
编程珠玑
》这本神器,第一章主要讲了利用位图这种结构来方便地解决一些问题。
·
2015-10-30 15:01
python
::
编程珠玑
番外篇 -- 原著 徐宥
编程珠玑
番外篇的番外篇 http://blog.youxu.info/2008/12/22/about-pearls/
编程珠玑
番外篇-D.
·
2015-10-30 14:19
编程珠玑
数组循环位移K位
来自《
编程珠玑
》,将数组看成一个向量x=ab,那么循环右移后数组就变成ba。
·
2015-10-30 14:41
数组
磁盘文件排序
编程珠玑
开始看
编程珠玑
了,第一个就是进行磁盘排序的问题,想到了也只是归并排序,但题目要求1M内存,这个算法不可行。
·
2015-10-30 13:26
编程珠玑
只有10%程序员能正确实现二分查找算法
乔恩·本特利(Jon Bentley)1986年的经典名著《
编程珠玑
》(Programming Pearls)则是少数几本能同时归入上述两类的编程图书之一。
·
2015-10-30 13:51
二分查找
最大子数组问题——
编程珠玑
第八章
问题:给定数组a[n],求其子数组的最大和。例如输入数组为: 1,-2,3,10,-4,7,2,-5 和最大的子数组为3,10,-4,7,2,因此输出为18. 没有想到更“巧妙”的算法前,用所谓“暴力”算法一般都能解决: 1、简单算法: 求出每个子数组的和,记录最大的那个即可。 void m
·
2015-10-30 13:13
编程珠玑
一维向量旋转算法
编程珠玑
第二章
看了
编程珠玑
第二章,这里面讲了三道题目,这里说一下第二题,一维向量旋转算法。 题目:将一个n元一维向量(例数组)向左旋转i个位置。
·
2015-10-30 11:21
编程珠玑
【活动】博客园“图灵‘
编程珠玑
’杯问答大赛”
博客园“图灵‘
编程珠玑
’杯问答大赛” 博客园“博问”频道上线快1周年了,在这一年里,有很多朋友在这里踊跃提问,获得新知。当然,这都离不开那些无私奉献、积极给大家答疑解惑的朋友。
·
2015-10-30 10:16
编程珠玑
领略计算机科学之美
《代码大全》一书的作者Steve McConnell对本书强烈称赞:“《
编程珠玑
》第1版是对我职业生涯早期影响最大的书之一,其中的许多真知灼见多年之后仍然使我受益匪浅。
·
2015-10-30 10:13
计算机
上一页
7
8
9
10
11
12
13
14
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他