Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要给bubbleSort函数计时,如果达到某个时间限制,它就会停止。在java中如何做到这一点?_Java_Bubble Sort - Fatal编程技术网

我需要给bubbleSort函数计时,如果达到某个时间限制,它就会停止。在java中如何做到这一点?

我需要给bubbleSort函数计时,如果达到某个时间限制,它就会停止。在java中如何做到这一点?,java,bubble-sort,Java,Bubble Sort,快多了! 例如:对于if块,时间是=排序时间:0分钟0秒。81毫秒。 没有if块=排序时间:0分钟0秒。15毫秒。 如果限制为=4ms.,则函数将始终返回,而不运行其全部过程 为什么会这样?我还能做什么 注意:返回数组的第一个值用于检查排序是否完成。首先,为了优化性能,我们可以尝试移动比较 if ( System.currentTimeMillis() - startTime > limit * 10) { return new long[] {0L, System.cur

快多了! 例如:对于if块,时间是=
排序时间:0分钟0秒。81毫秒。
没有if块=
排序时间:0分钟0秒。15毫秒。
如果限制为=4ms.,则函数将始终返回,而不运行其全部过程

为什么会这样?我还能做什么


注意:返回数组的第一个值用于检查排序是否完成。

首先,为了优化性能,我们可以尝试移动比较

if ( System.currentTimeMillis() - startTime > limit * 10) {
        return new long[] {0L, System.currentTimeMillis() - startTime};
}
从嵌套循环到外部循环。如果阵列的大小足够大,这将提供很多改进

更好的方法是使用计时器类或多线程,如以下文章所述:


谢谢!将比较移到外部循环解决了我的问题。
if ( System.currentTimeMillis() - startTime > limit * 10) {
        return new long[] {0L, System.currentTimeMillis() - startTime};
}
if ( System.currentTimeMillis() - startTime > limit * 10) {
    return new long[] {0L, System.currentTimeMillis() - startTime};
}