草庐IT

现代优化算法

全部标签

java - 改进素筛算法

我正在尝试制作一个像样的Java程序,生成从1到N的素数(主要用于欧拉计划问题)。目前,我的算法如下:初始化一个boolean值数组(如果N足够大,则初始化一个位数组)使它们全为假,并初始化一个整数数组来存储找到的素数。设置一个整数,s等于最小素数,(即2)当s在数组/位数组中将所有s的倍数(从s^2开始)设置为true。在数组/位数组中找到下一个为假的最小索引,将其用作s的新值。结束。遍历数组/位数组,对于每个为假的值,将相应的索引放入素数数组中。现在,我已经尝试跳过不是6k+1或6k+5形式的数字,但这只会让我的速度提高约2倍,同时我看到程序运行速度比我的快几个数量级(尽管非常复杂

java - 不允许对元素进行计数的排序算法

这道题我在某公司面试中看到过crosss,但是我对这道题首先不是很清楚。你们能澄清我的疑问吗?Question:WriteaprogramtosortanintegerarraywhichcontainsOnly0's,1'sand2's.Countingofelementsnotallowed,youareexpectedtodoitinO(n)timecomplexity.ExArray:{2,0,1,2,1,2,1,0,2,0} 最佳答案 输出到链表。记住列表的开头。记住1开始的位置。记住列表的末尾。遍历整个数组。如果遇到0,

java - QuickSort分区算法

我正在尝试编写Cormen算法教科书中的快速排序算法。下面是我的代码。classQuicksort{publicvoidqSort(int[]a,intp,intr){if(p但是,当我执行这段代码时,我得到了一个错误的输出。OriginalArray:54721936108SortedArray:14526738910谁能解释一下哪里出了问题。我已经完全按照“算法简介”一书中给出的方式实现了这段代码。谢谢。 最佳答案 不,你没有直接复制它:)我有它......for(intj=p;j应该是for(intj=p;j或for(intj

强一致共识算法-BFT/CFT

区块链中共识机制的目的:使所有节点获得一致的区块链视图。一致性视图包含两个含义:1、一致性:区块链的每次更新后,每个节点都能获得相同的视图;2、有效性(可审查特性):由任一诚实节点在区块链发布的信息都最终被其它节点承认并记录。(如果一笔交易被发送到N−fN-fN−f个诚实节点了,那么最终每个诚实节点都会确认这笔交易。这就是可审查特性。)在区块链系统中达成以上两个特性的算法就是一致性算法。分布式系统一般通过状态复制机原理来实现一致性。其核心思想是系统中所有副本运行着相同的状态机,只要所有副本都以相同的初始状态开始,并基于相同的初始状态执行一组相同顺序的操作,那么所有的状态最终会收敛一致,即整个系

代码随想录算法训练营第六天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和。

代码随想录算法训练营第六天|454.四数相加II,383.赎金信,15.三数之和,18.四数之和。454.四数相加II383.赎金信15.三数之和18.四数之和454.四数相加II题目链接:454.四数相加II,难度:中等【实现代码】classSolution{public:intfourSumCount(vectorint>&nums1,vectorint>&nums2,vectorint>&nums3,vectorint>&nums4){intn=nums1.size();intresult=0;unordered_mapint,int>m;intsum;for(inti=0;in;i++

Java编译器字符串优化

在我看来,编译器将采取这样的做法似乎是合理的:log.info("Areallylongloggermessagethatiskindofapaininthetucous"+"andviolatesformattingstandardsbymakingthelinetolong");并将两个字符串编译成一个。我很确定这是真的,但我想如果有人提出来,让我的鸭子排成一排。 最佳答案 是的,这将由constantexpression处理Java语言规范的一部分。特别参见部分15.18.1.StringConcatenationOperat

java - 算法:合并重叠片段

我有以下ADT(未排序):List//directionisfrom0to2piclassSegment{intstart;intend;}例如,他们代表这种情况:如何制作合并阶段(示例中的绿色箭头)?显然我需要遍历列表并将每个段与所有其他段进行比较,并且如果可能的话对每对夫妇进行简单合并(这很容易)。但是在第二次迭代中我需要以某种方式返回到列表的开头并重新开始等等......所以我很难找到这个算法将如何收敛。编辑:线段可以是圆形的——从1.75pi到0.5pi等等...... 最佳答案 按开始时间对片段进行排序。创建一个堆栈来存储

java - 最佳(scala 和其他针对 java vm 的语言)优化

我只是在阅读有关genericsspecialization的scala实现的信息,他们通过此功能实现的速度提升确实引起了我的注意。我想知道还有哪些其他功能具有针对javavm的语言实现,实际上使它们的性能比java更好?我知道生成的代码离java越远,它的性能下降得越远。所以我真的很想知道语言还可以实现哪些其他功能来在Java中实现更好的性能。请不要回答这个谈论scala在java之上的非常好的特性的问题,我只是在谈论性能。此外,如果您有尚未实现的建议,请务必回答!谢谢! 最佳答案 Scala做supporttail-callop

java - Java中Levenshtein算法的问题

我想使用Levenshteinalgorithm对于以下任务:如果我网站上的用户搜索某个值(他在输入中输入字符),我想立即使用AJAX检查建议,就像GoogleInstant一样。我的印象是Levenshtein算法对于这样的任务来说太慢了。为了检查它的行为,我首先用Java实现它,在方法的每次递归调用中打印出两个String。publicclassLevenshtein{publicstaticvoidmain(String[]arg){Stringa="HalloZusammen";Stringb="jfdssZusammen";intres=levenshtein(a,b);Sy

java - SecretKeyFactory.getInstance() 为单元测试中的所有算法抛出异常

由于某种原因,无论指定什么算法,在调用SecretKeyFactory.getInstance()时我总是在单元测试中遇到异常。例如:SecretKeyFactory.getInstance("PBEWITHMD5ANDDES")com.mhe.connect.util.EncryptionException:java.security.NoSuchAlgorithmException:PBEWITHMD5ANDDESSecretKeyFactorynotavailable同时,我看到Security.getProviders()返回我需要的算法:SECRETKEYFACTORY.DE