文库网
ImageVerifierCode 换一换
首页 文库网 > 资源分类 > PDF文档下载
分享到微信 分享到微博 分享到QQ空间

28堆和堆排序:为什么说堆排序没有快速排序快?.pdf

  • 资源ID:2181522       资源大小:976.22KB        全文页数:24页
  • 资源格式: PDF        下载积分:6文币
微信登录下载
快捷下载 游客一键下载
账号登录下载
三方登录下载: QQ登录 微博登录
二维码
扫码关注公众号登录
下载资源需要6文币
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

28堆和堆排序:为什么说堆排序没有快速排序快?.pdf

1、l) bsObj = BeautifulSoup(html) title = bsObj.find(“h1“).get_text() content = bsObj.find(“div“, “id“:“mw-content-text“).find(“p“).get_text() store(title, content) return bsObj.find(“div“, “id“:“bodyContent“).findAll(“a“, href= pile(“(/wiki/)(?!:).)*$“) links = getLinks(“/wiki/Kevin_Bacon“) try: while

2、 len(links) 0: newArticle = linksrandom.randint(0, len(links)-1).attrs“href“ print(newArticle) links = getLinks(newArticle) finally: cur.close() conn.close() 这里有几点需要注意:首先,charset=utf8 要增加到连接字符串里。这是让连接 conn 把所有发送到数据库的信息都当成 UTF-8 编码格式(当然,前提是数据库默认编码已经设置成 UTF-8)。 然后要注意的是 store 函数。它有两个参数:title 和 content

3、,并把这两个参数加到了一个 INSERT 语句中并用光标执行,然后用光标进行连接确认。这是一个让光标与连接操作分离的好例子; 当光标里存储了一些数据库与数据库上下文(context)的信息时,需要通过连接的确认操作先将信息传进数据库,再将信息插入数据库。 最后要注意的是,finally 语句是在程序主循环的外面,代码的最底下。这样做可以保证,无论程序执行过程中如何发生中断或抛出异常(当然,因为网络很复杂,你得随时准备遭遇异常),光标和连 接都会在程序结束前立即关闭。无论你是在采集网络,还是处理一个打开连接的数据库,用 try.finally 都是一个好主意。 虽然 PyMySQL 规模并不大,

4、但是里面有一些非常实用的函数本书并没有介绍。具体请参考 Python 的 DBAPI 标准文档(http:/legacy.python.org/dev/peps/pep-0249/ )。 5.3.4 数据库技术与最佳实践 数据库技术与最佳实践 有些人的整个职业生涯都在学习、优化和创造数据库。我不是这类人,这本书也不是那类书。但是,和计算机科学的很多主题一样,有一些技巧你其实可以很快地学会,它们可以让你的数据库变得更高 效,让应用的运行速度更快。 首先,给每个数据表都增加一个 id 字段,不会出什么问题。MySQL 里所有的表都至少有一个主键(就是 MySQL 用来排序的字段),因此 MySQL

5、 知道怎么组织主键,通常数据库很难智能地选择主键。 究竟是用人造的 id 字段作为主键,还是用那些具有唯一性属性的字段作为主键,比如 username 字段,数据科学家和软件工程师已经争论了很多年,但我更倾向于主动创建一个 id 字段。这样做的原 因一两句话难以说清,不过对于一些非企业级系统的数据库,你还是应该用自增的 id 字段作为主键。 其次,用智能索引。字典(指的是常用的工具书,不是指 Python 的字典对象)是按照字母顺序排列的单词表。这样做让你在任何时候都能快速地找到一个单词,只要你知道这个单词是如何拼写的就行。 你还可以把字典想象成另一种形式,将单词按照单词含义的字母顺序进行排列

6、。如果你没玩过一些奇怪的游戏,比如危险边缘(Jeopardy)智力游戏,就不能理解游戏的含义,这样的字典就没法用了。但 是在数据库查询的工作里,这种按照字段含义进行排序的情况时有发生。比如,你的数据库里可能有一个字段经常要查询: SELECT * FROM dictionary WHERE definition=“A small furry animal that says meow“; +-+-+-+ | id | word | definition | +-+-+-+ | 200 | cat | A small furry animal that says meow | +-+-+-+ 1

7、 row in set (0.00 sec) 你可能非常想给这个表增加一个额外的键(除了已经存在的主键 id 之外),让查询变得更快。但是,增加额外的索引需要占用更多的空间,而且插入新行的时候也需要花费更多的时间。为了让事情简 单点儿,你可以让 MySQL 只检索查询列的一部分字符。比如下面的命令创建了一个查询 definition 字段前 16 个字符的智能索引: CREATE INDEX definition ON dictionary (id, definition(16); 这个索引比全文查询的速度要快很多,而且不需要占用过多的空间和处理时间。 最后一点是关于数据查询时间和数据库空间的

8、问题。一个常见的误区就是在数据库中存储大量重复数据,尤其是在做大量自然语言数据的网络数据采集任务时。举个例子,假如你想统计网站突然出现的 一些词组的频率。这些词组也许可以从一个现成的列表里获得,也许可以通过文本分析算法自动提取。最终你可能会把词组储存成下表的形式: +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | id | int(11) | NO | PRI | NULL | auto_increment | | url | varchar(200) | YES | | NULL | |

9、 | phrase | varchar(200) | YES | | NULL | | +-+-+-+-+-+-+ 每当你发现一个词组就在数据库中增加一行,同时把 URL 记录下来。但是,如果把这些数据分成三个表,你就可以看到数据库占用的空间会大大降低: DESCRIBE phrases +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | id | int(11) | NO | PRI | NULL | auto_increment | | phrase | varchar(200) | Y

10、ES | | NULL | | +-+-+-+-+-+-+ DESCRIBE urls +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | id | int(11) | NO | PRI | NULL | auto_increment | | url | varchar(200) | YES | | NULL | | +-+-+-+-+-+-+ DESCRIBE foundInstances +-+-+-+-+-+-+ | Field | Type | Null | Key | Defaul

11、t | Extra | +-+-+-+-+-+-+ | id | int(11) | NO | PRI | NULL | auto_increment | | urlId | int(11) | YES | | NULL | | | phraseId | int(11) | YES | | NULL | 名是否正确。 2420 曲线失败。曲线文件名称无效。 2430 错误信息失败。 错误信息文件不存在。 请重新启动控制器。 2431 错误信息失败。 无法打开错误信息文件。 请重新启动控制器。 2432 错误信息失败。 无法获取错误信息文件的标题数据。 请重新启动控制器。 2433 错误信息失败

12、。 错误信息文件被破坏。 请重新启动控制器。 2434 错误信息失败。 指定一个错误信息文件以外的文件。 请重新启动控制器。 2435 错误信息失败。 错误信息文件版本无效。 请重新启动控制器。 2440 文件失败。 文件编号正在使用中 请确认文件编号。 2441 文件失败。 无法打开文件。 请确认文件是否存在或指定的文件名是 否正确。 2442 文件失败。 无法打开文件。 请事先打开文件。 2443 文件失败。 文件编号被另一个任务打开。 请确认程序。 维护篇 8. 故障排除 RC90 Rev.2 155 编号 信息 应对措施 补充信息1 补充信息2 2444 文件失败。 无法关闭文件。 -

13、 2445 文件失败。 无法查找文件。 - 2446 文件失败。 文件编号没有空格。 - 2447 访问权限错误。 无法从该文件读取。 请打开( ROpen 或 UOpen等)有读取 访问权限的文件。 2448 访问权限错误。 无法写入该文件。 请打开( WOpen 或 UOpen 等)有写 入访问权限的文件。 2449 访问权限错误。 无法对该文件进行二进制操作。 请打开 (BOpen) 有二进制访问权限的 文件。 2450 文件失败。 无法操作文件。 - 2451 文件失败。 无法读取文件。 - 2452 文件失败。 无法写入文件。 - 2453 文件失败。 该操作无法在当前硬盘中执行。

14、无法在当前硬盘 (ChDisk) 中执行指定 的命令。 2454 文件失败。 指定了不正确的硬盘。 - 2455 文件失败。 指定了不正确的驱动器。 - 2456 文件失败。 指定了不正确的文件夹。 - 2460 Database失败。 Database编号正在使用中。 - 2461 Database失败。 无法打开Database。 - 2462 Database失败。 Database编号被另一个任务打开。 - 2470 Windows通信失败。 设想以外的状态。 - 2471 Windows通信失败 请求与响应逻辑不匹配 - 2472 Windows通信失败。 已初始化完毕。 - 247

15、3 Windows通信失败。 系统忙或未进行初始化。 - 2474 Windows通信失败。 没有请求。 - 2475 Windows通信失败。 数据溢出。 - 2476 Windows通信失败。 无法等待事件。 - 2477 Windows通信失败。 指定了不正确的文件夹。 请确认指定的文件夹是否正确。 2478 Windows通信失败。 发生处理错误。设想以外的错误代码 - 2500 为等待指定的事件条件超出最大数量。 可指定的最大事件条件数为8个。 检查程序。 维护篇 8. 故障排除 156 RC90 Rev.2 编号 信息 应对措施 补充信息1 补充信息2 2501 Ctr函数中指定的

16、比特数不与CTReset 语句一起设置。 检查程序。 指定的 位编号 2502 任务号超过最大执行数量。 可同时执行的任务数为16个。 检查程序。 2503 指定的任务号正在执行时无法执行 Xqt。 检查程序。 指定的 任务号 2504 任务失败。 指定的操作程序已经在执行一个阵列 (parallel)处理。 请重建项目。 2505 输入语句变量赋值数据不足。 请确认通信数据的内容。检查程序。 2506 输入语句的指定变量超过最大数量。 只能对OP指定1个变量。对其它装置可 指定最多32个变量。 2507 所有计数器都在使用, 无法用CTReset 设置一个新的计数器。 可同时使用的计数器为1

17、6个。 检查程序。 2508 OnErr失败。 无法处理OnErr语句。 请重建项目。 2509 OnErr失败。 无法处理OnErr语句。 请重建项目。 2510 指定的I/O标签未定义。 指定的I/O标签未注册。请确认I/O标签 文件。 2511 在没有执行上一个SyncLock 语句的 情况下使用SyncUnlock语句。检查程 序。 检查程序。 信号 编号 2512 已经执行SyncLock语句。 不能连续2次执行SyncLock。检查程序。 信号 编号 2513 指定的点标签未定义。 指定的点标签未注册。请确认点文件。 2514 无法按时获取机器人的电动机。 请重新启动控制器。 25

18、15 无法配置日期或时间。 请确认已设置正确的日期或时间。 2516 无法获取调试数据或无法初始化。 请重新启动控制器。 2517 无法转换成日期或时间。 请确认控制器的时间。 请重新启动控制器。 2518 起点数据比终点数据的编号大。 请将大于起点编号的大编号指定为终点 编号。 起点 终点 2519 为FmtStr$指定的格式无法识别。 请确认格式。 2520 点位数据文件名称太长。 请确认指定的点文件名是否正确。可指 定的文件名最长为32字符。 2521 点失败。 点位数据文件路径太长。 请确认指定的点文件名是否正确。 2522 点位数据文件名称无效。 2523 已经执行继续指令。 252

19、4 指定的Trap编号正在执行时无法执行 Xqt。 维护篇 8. 故障排除 RC90 Rev.2 157 编号 信息 应对措施 补充信息1 补充信息2 2525 Password is invalid. 请确认设置的密码是否正确。 2526 无等待。 - 2527 用于全局可变等待的变量过多。 - 2528 该变量不能用于全局可变等待。 - 2529 不能使用Byref,如果变量用于全局可 变等待。 - 2530 点文件过多。 - 2531 点文件被其他机械手使用。 - 2532 不能计算点的位置,因为有未定义的 数据。 - 2533 INP或OUTP出错. - 2534 Restart语句,

20、缺少指定main函数。 一次也未执行函数, 但却调用了Restart。 2900 无法以伺服器打开以太网端口。 请确认以太网端口设置是否正确。请确 认以太网电缆是否正确连接。 2901 无法作为以太网端口的用户打开。 请确认以太网端口设置是否正确。请确 认以太网电缆是否正确连接。 2902 无法从以太网端口读取。 请确认通信目标端口是否关闭。 2904 指定的IP地址无效。 2905 以太网失败。 未指定服务器/用户。 2906 未配置以太网端口。 设置之后,请打开端口。 请确认以太网端口设置是否正确。 端口编号 2907 另一个任务已经打开以太网端口。 多个任务不能使用一个端口。 端口编号

21、2908 以太网端口打开时无法更改端口参 数。 无法变更已打开端口的设置。 端口编号 2909 以太网端口未打开。 要使用以太网端口时,请首先执行 OpenNet。 端口编号 2910 从以太网端口读数超时。 请确认通信是否正确。 超时值 2911 无法从以太网端口读取。 请确认通信是否正确。 2912 另一个任务已经打开以太网端口。 多个任务不能使用一个端口。 端口编号 2913 无法写入以太网端口。 请确认以太网端口设置是否正确。请确 认以太网电缆是否正确连接。 端口编号 2914 以太网端口连接未完成。 请确认目标端口是否打开。 端口编号 2915 从以太网端口收到的数据超出单线范 围。

22、 1行的最长长度为255字节。 接 收 的 1 行 字节数 2920 RS-232C失败。 RS-232C端口程序出错。 请确认是否正确识别RS-232C电路板。 2921 无法从RS-232C端口读数。 请确认通信设置或通信是否正确。 2922 无法从RS-232C端口读数。超限错误。 请降低传输速度或减少数据量。 维护篇 8. 故障排除 158 RC90 Rev.2 编号 信息 应对措施 补充信息1 补充信息2 2926 未安装RS-232C端口硬件。 请确认是否正确识别RS-232C电路板。端口编号 2927 RS-232C端口已经被另一个任务打 开。 多个任务不能使用一个端口。 端口编号 2928 RS-232C端口打开时无法更改端口参 数。 无法变更已打开端口


注意事项

本文(28堆和堆排序:为什么说堆排序没有快速排序快?.pdf)为本站会员(始于喜欢终于深爱)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(点击联系客服),我们立即给予删除!




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

文库网用户QQ群:731843829  微博官方号:文库网官方   知乎号:文库网

Copyright© 2025 文库网 wenkunet.com 网站版权所有世界地图

经营许可证编号:粤ICP备2021046453号   营业执照商标

1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png