快速业务通道

java api之算法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
寸(8),会产生下列输出:

% java Perm dictionary.txt 8

12: [apers, apres, asper, pares, parse, pears, prase, presa, rapes,

reaps, spare, spear]

11: [alerts, alters, artels, estral, laster, ratels, salter, slater,

staler, stelar, talers]

10: [least, setal, slate, stale, steal, stela, taels, tales, teals,

tesla]

9: [estrin, inerts, insert, inters, niters, nitres, sinter, triens,

trines]

9: [capers, crapes, escarp, pacers, parsec, recaps, scrape, secpar,

spacer]

9: [anestri, antsier, nastier, ratines, retains, retinas, retsina,

stainer, stearin]

9: [palest, palets, pastel, petals, plates, pleats, septal, staple,

tepals]

8: [carets, cartes, caster, caters, crates, reacts, recast, traces]

8: [ates, east, eats, etas, sate, seat, seta, teas]

8: [arles, earls, lares, laser, lears, rales, reals, seral]

8: [lapse, leaps, pales, peals, pleas, salep, sepal, spale]

8: [aspers, parses, passer, prases, repass, spares, sparse, spears]

8: [earings, erasing, gainers, reagins, regains, reginas, searing,

seringa]

8: [enters, nester, renest, rentes, resent, tenser, ternes, treens]

8: [peris, piers, pries, prise, ripes, speir, spier, spire]

java api之算法(3)

时间:2010-12-24

混排(Shuffling)

混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该 List, 这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。例如,它可被用来混排代表一副牌的 Card 对象的一个 List 。另外,在生成测试案例时,它也是十分有用的。

这个操作有两种形式。第一种只采用一个 List 并使用默认随机源。第二种要求调用者提供一个 Random 对象作为随机源。这个算法的一些实际代码曾在 List 课程中被作为例子使用。

常规数据操作(Routine Data Manipulation)

Collections 类为在 List 对象上的常规数据操作提供了三种算法。这些算法是十分简单明了的:

reverse: 反转在一个列表中的元素的顺序。

fill: 用特定值覆盖在一个 List 中的每一个元素。这个操作对初始化一个 List 是十分有用的。

copy: 用两个参数,一个目标 List 和一个源 List, 将源的元素拷贝到目标,并覆盖它的内容。目标 List 至少与源一样长。如果它更长,则在目标 List 中的剩余元素不受影响。

搜索(Searching)

binary search (二进制搜索)算法用二进制搜索算法在一个已排序的 List 中寻找特定元素。这个算法有两种形式。第一种采用一个 List 和一个要寻找的元素 ( "搜索键(search key)")。这种形式假设 List 是按照它的元素的自然排序排列成上升顺序的。第二种形式除采用 List 外,还采用一个 Comparator 以及搜索键,并假设 List 是按照特定 Comparator 排列成上升顺序的。 排序算法(描述见上) 可优先于 binarySearch 而被用来为List 排序。

两种形式的返回值是相同的: 如果 List 包含搜索键,它的索引将被返回;如果不包括,则返回值为 (-(insertion point) - 1), 这里的 insertion point 被定义为一个点,从这个点该值将被插入到这个 List 中:大于该值的第一个元素的位置索引,或list.size()。 选用这个不可否认的难看的公式是为了保证如果且仅如果搜索键被发现,则返回值将等于0。它基本上是一个将布尔逻辑 ("found") 和整数 ("index") 综合到单一的int返回值的大杂烩。

下列惯用程序对 binarySearch 操作的两种形式均适用,它

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号