【问题标题】:JavaFX - Progress Bar for Sorting MethodJavaFX - 排序方法的进度条
【发布时间】:2019-10-23 19:24:16
【问题描述】:

我必须创建一个 JavaFX 程序来创建一个随机生成的 5 位整数列表,然后使用 BubbleSort 对它们进行排序。我必须将排序方法绑定到进度条以显示它的状态。我将如何将进度条绑定到 BubbleSort 方法? (可以改变列表的大小以获得最佳结果)

【问题讨论】:

  • 首先,您需要确定进度的概念。进度是百分比/比率;你怎么知道你的冒泡排序算法走了多远? (说实话,我怀疑有办法知道它。)
  • 正如 VGR 已经说过的。即使您在每次排序后更新您的比率,它仍然会太快。具有 50 个元素的 BubbleSort 完全不需要时间。要么增加要排序的项目数量,要么人为地减慢排序操作,直到可以观察到进度条并且不会立即从 0 跳到 100。

标签: java javafx progress-bar bubble-sort


【解决方案1】:

ProgressBars 通常不衡量实际进度(因为它们有时无法确切知道某件事真正需要多长时间才能完成,以及当前进度的确切进度)。如果可以,则使用实际进度,否则使用估计值。在这种情况下,估计可能会更好,除非您能找到某种方法来衡量冒泡排序的实际进展(我没有尝试这样做,而且我不知道您是否可以,正如 VGR 在厘米)。

您可以做的是根据不同大小的输入集对排序进行基准测试。如果对于给定的输入大小,预计排序将花费不到一秒的时间,甚至不要费心显示进度条。如果预计排序需要更长的时间,则在对实际数据进行排序时,请根据不同输入集大小的基准结果计算时间估计值。运行独立于实际排序算法的时间线,它会根据您的估计更新进度。实际完成排序后,停止时间线并将进度设置为 100%。它不会是完美的,但可能会足够好。

我会将这个建议策略的实施留给感兴趣的读者。

另一个更简单的解决方案是使用indeterminate progress bar,它会一直旋转直到一切都完成。它根本没有真正显示出进展,它只是表明某些事情(可能)正在发生。有时这对于某些任务来说是一个不错的解决方案,但对于您的排序进度测量任务,显示进度估计或计算实际进度可能是首选。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多