写了一快排发现随机数为一百的时候有bug不知道咋办了 bug 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道所说的bug是指什么,我测试了几次,结果好像都没问题。 for (int i = 0; i < rows; i++) { // rows 改为100有bug ???arr[i] = random.nextInt(rows);}把rows 改成 100然后 会使得arr[i] 只能得到100个随机数, 而 arr[101]……后面的都没有数。从而影响 xunHuanTi 这个 方法里面的比较 for (int i = 0; i < rows; i++) { // rows 改为100有bug ???arr[i] = random.nextInt(100);}大哥我说的是只改这一个rows, 是不是只要把rows改成具体的数值,就会有下面的错误:java.lang.StackOverflowError 可能是当rows改成100后,产生的随机数都是在100以内,每次快排需要变化位置的次数很多,所以当执行递归的时候:arr[j] = arr[i];arr[i] = arr[++j];需要更多次的赋值,开辟了过多的空间,造成java堆栈溢出。(统计结果:递归执行8次后,产生的替换次数就不再增加了一直保持1407353,平均替换次数也在175919。)但是当用rows的时候,产生的随机数,基本是分布平均的。(统计结果:产生替换11941900次,递归共执行878584次,平均每次递归产生13次替换)统计方法:类里声明2个变量分别用来统计产生替换的总数和递归执行总数不知道是否有所帮助,具体原因估计和递归时,执行下列代码的时候,java内存分配有关:arr[j] = arr[i];arr[i] = arr[++j]; String和String数组的两种创建方式的不同 关于Java的三大特征! java 集合类 求一字符串处理算法 我在Eclipse配置ssh 不要插件 来点难度的 高手一旦写出代码解决,200分及时全给-------数据库表与IO流的交互的问题. 跪求!串口应用程序打包后不能用 简单讲解用JMF技术在网页中用Applet直接抓取摄像头的影像的问题??? 怎样把一个字符串中的\\u变为\u,急? 为何用appletviewer 能执行applet,但在html文件里却没显示出来? 关于实例化接口的两种方法 基类构造函数调用导出类的方法?
// rows 改为100有bug ???
arr[i] = random.nextInt(rows);
}把rows 改成 100
然后 会使得arr[i] 只能得到100个随机数, 而 arr[101]……后面的都没有数。
从而影响 xunHuanTi 这个 方法里面的比较
// rows 改为100有bug ???
arr[i] = random.nextInt(100);
}
大哥我说的是只改这一个rows,
java.lang.StackOverflowError
arr[j] = arr[i];
arr[i] = arr[++j];
需要更多次的赋值,开辟了过多的空间,造成java堆栈溢出。
(统计结果:递归执行8次后,产生的替换次数就不再增加了一直保持1407353,平均替换次数也在175919。)
但是当用rows的时候,产生的随机数,基本是分布平均的。
(统计结果:产生替换11941900次,递归共执行878584次,平均每次递归产生13次替换)
统计方法:
类里声明2个变量分别用来统计产生替换的总数和递归执行总数
不知道是否有所帮助,具体原因估计和递归时,执行下列代码的时候,java内存分配有关:
arr[j] = arr[i];
arr[i] = arr[++j];