草庐IT

GS算法

全部标签

java - 自己学习算法,如何在java中实现元组?

我正在自学算法,如果我的标题不正确,我很抱歉!我不明白如何在Java中实现它。ifx=0:return(q,r)=(0,0)(q,r)=divide(⌊x/2⌋,y)q=2·q,r=2·rifxisodd:r=r+1ifr≥y:r=r−y,q=q+1return(q,r)我不知道如何用Java实现以下部分。(q,r)=(0,0)(q,r)=divide(⌊x/2⌋,y)return(q,r) 最佳答案 虽然Java缺乏对元组的内置支持,但好消息是您不必使用元组来实现此算法,返回值除外。两个常规int变量r和q就可以了。//(q,r)

java - 哪种加密算法可用于加密存储在磁盘上的文件?

我在文件中有一些文本。我想加密此文件,以便最终用户无法读取或写入此文件,但应用程序可以读取它。应用程序中可以存储secret,因为它以另一种方式得到保护。什么类型的加密支持这些要求?我在想AES。我对加密知之甚少,正在寻找一个起点。算法或框架建议会很棒。最后一点,代码是在Windows和Linux环境上运行的Java。 最佳答案 由于您已将帖子标记为“Java”——我建议您查看“JavaCryptographyExtension”(JCE)。从J2SE1.4开始,它就与SDK和JRE捆绑在一起。当然,一个必要的例子和overview

java - 对于不能全部放入内存的大多数排序数据的良好排序算法?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。如果给你:一定量的数据内存大小为数据大小的一半部分数据已排序您不知道排序数据的大小。你会选择哪种排序算法?我在插入和快速排序之间争论不休。我知道插入排序的最佳情况是O(n),但最坏情况是O(n2)。另外,考虑到内存有限,我会把数据分成两部分,对每一部分进行快速排序,然后将所有内容合并在一起。拆分数据需要O(n)时间,合并数据需要O(n)时间,使用快速排序

java - Java中的Quicksort算法程序

我正在尝试用Java实现QuickSort算法程序,但我得到的答案不正确。publicclassQuickSort{publicstaticvoidmain(String[]args){intarr[]={12,34,22,64,34,33,23,64,33};inti=0;intj=arr.length;while(ij){swap(arr,pivot,j);returni;}while(i=1&&arr[j]>=arr[pivot]){j--;}if(i上面的程序给我的输出是:122322333433643464谁能告诉我怎样才能得到我想要的结果? 最佳

java - 调车场算法的问题

我已经成功地用java实现了调车场算法。该算法本身很简单,但是我在使用分词器时遇到了问题。目前,该算法适用于我想要的一切,但不包括一件事。如何区分减法(-)和负数(-)比如4-3就是减法但是-4+3是负数我现在知道如何找出它什么时候应该是负数,什么时候应该是负数,但是它应该放在算法中的什么位置,因为如果你像函数一样使用它,它就不会总是有效,例如3+4*2/-(1−5)^2^3当1-5变为-4时,它会在平方和立方之前变为4就像3+4*2/cos(1−5)^2^3,你会在平方和立方之前取余弦但在真正的数学中你不会用-因为你真正说的是3+4*2/-((1−5)^2^3)为了得到正确的值

java - 选择用于实现分布式消息传递算法的编程语言

基本上,我想实现以下算法并分析使用这些算法构建的系统在不同条件下的表现。八卦协议(protocol)多个paxos一致性哈希我的兴趣在于这些算法。我基本上是在寻找一种能让我快速编写这些算法并深入理解这些算法的编程语言。我应该选择哪种语言?Java、Scala、Erlang或其他任何语言。目前,我会Java和C++。 最佳答案 您可以尝试在Erlang中实现协议(protocol)。进程通信非常优雅地嵌入到语言和VM中。两个elrang进程之间的异步消息传递,无论是在同一VM中还是在语义等价的VM之间。算法的容错方面/重试逻辑等方面的

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个诚实节点了,那么最终每个诚实节点都会确认这笔交易。这就是可审查特性。)在区块链系统中达成以上两个特性的算法就是一致性算法。分布式系统一般通过状态复制机原理来实现一致性。其核心思想是系统中所有副本运行着相同的状态机,只要所有副本都以相同的初始状态开始,并基于相同的初始状态执行一组相同顺序的操作,那么所有的状态最终会收敛一致,即整个系