草庐IT

algorithm

全部标签

java - 改进素筛算法

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

java - Eclipse 生成的 equals 使用 1231 和 1237 的 boolean 值有什么特别的原因吗?

标题基本上说明了一切。我试过谷歌搜索但返回了一大堆误报。我想我只是想知道这两个特定数字背后是否有特定的理由,或者它们是否很容易是许多其他数字集?编辑:而且,既然已经回答了数字的来源,那么booleanhashCode方法的编写者使用这些数字(除了它们是质数之外)的原因是什么?其他任何一组质数是否也同样有效? 最佳答案 这些数字来自官方BooleanAPI. 关于java-Eclipse生成的equals使用1231和1237的boolean值有什么特别的原因吗?,我们在StackOver

java - 我不可能理解所描述的字符串搜索方法。什么是 uFFFF?

我正在阅读有关在排序的字符串数组中搜索(范围)字符串的内容。它说:Ifyouwanttofindallstringsstartingwith"h",youcanrunabinarysearchforthestrings"h"and"h\uFFFF".Thisgivesalltheindexesofthebandforallthekeysthatstartwith"h".Notethatabinarysearchcanreturntheindexwherethestringwouldbeevenifitisnotactuallyinthearray.这一段我什么都不懂。什么是h\uFFF

java - QuickSort分区算法

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

java - 大于 lg N 的最小整数

我在某处读到:ThesmallestintegerlargerthanlgNisthenumberofbitsrequiredtorepresentNinbinary,inthesamewaythatthesmallestintegerlargerthanlog10NisthenumberofdigitsrequiredtorepresentNindecimal.TheJavastatementfor(lgN=0;N>0;lgN++,N/=2);isasimplewaytocomputethesmallestintegerlargerthanlgN我可能在这里遗漏了一些东西,但是Jav

java - 使用邻居递增地计算矩阵中的元素

我有这个Java问题,我怀疑它与更高级别的算法有关,但我的搜索未能得出任何实用的结论。你构造一个数组如下:11112113311464115101051基本上,Ai,j=Ai-1,j-1+Ai-1,j。它应该返回索引(l,c)处的元素:对于(4,1)它应该返回4,(5,2)返回10,等等。我的解决方案很简单,但还不够:staticlongget(intl,intc){long[][]matrix=newlong[l+1][l+1];matrix[0][0]=1;matrix[1][0]=1;matrix[1][1]=1;for(inti=2;i它不适用于较大的l和c值。使用BigInt

java - 如何检测图像是否像素化

之前在SO上有这样一个问题:Detectingapixelatedimageinpython还有quora我正在尝试确定是否可以将用户上传的图像检测为“像素化”。像素化是指图像likethese:就我而言,我无权访问原始(非像素化)版本。我的方法:不确定这种方法的效果如何,但如果我可以获得图像中每个像素的RGB,然后将其与其相邻像素进行比较以查看它们是否相似,那么我可以检测到图像像素化了吗?我可以获得像素的RGB,但不知道如何将它们与邻居进行比较。是否已经有可用的算法来执行此类操作?我可以采取其他一些方法吗?我不受任何特定语言的约束。 最佳答案

java - 从几个数字中减去最小的数字

我有两个数字。我希望从两个值中减去较小的数字。x:1000y:200=>result:x=800andy=0.下面的内容对我来说有点难看,那么有没有更好的方法可以做到这一点?if(x 最佳答案 应该这样做:intmin=Math.min(x,y);x-=min;y-=min; 关于java-从几个数字中减去最小的数字,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/13028512

Java 编程 : Dynamic Programming on stairs example

一个人正在跑n步楼梯,一次可以走1步、2步或3步。现在编写一个程序来计算child有多少种可能的跑楼梯方式。给出的代码如下publicstaticintcountDP(intn,int[]map){if(n-1)returnmap[n];else{map[n]=countDP(n-1,map)+countDP(n-2,map)+countDP(n-3,map);returnmap[n];}}我懂C和C++,不懂JAVA。这是来自CrackingtheCoding采访书。谁能解释一下她为什么以及如何在这里使用功能图?这里的map是数组吧?我没有看到任何行将输入保存到map数组,但它如何返

java - 算法:合并重叠片段

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