0

我的问题是关于我目前正在从事的一个 Java 项目。我必须建立一个模拟来从概念上/视觉上展示各种不同排序算法的工作原理。其中包括:冒泡排序、插入排序、归并排序等。这必须允许用户逐步完成流程的每个步骤或选择他们希望执行的速度。这必须使用线程来完成。排序算法都在一个类中,用户从端选择的任何一个都将在线程中运行。

例如 sort.bubbleSort(objects); < objects 是要排序的对象数组。

我的问题是我不知道如何操纵线程的速度。例如,我需要一步一步地在算法的每一行执行后暂停。该项目还实现了 MVC。线程在 Contoller 包中,排序类在 Model 中。任何可以帮助我的人都将不胜感激。

4

1 回答 1

0

我没有任何灵丹妙药类型的解决方案。我认为你将不得不Thread.sleep(...)在不同的地方调用你的代码。

public class BubbleSort {
    private long sleepBetweenIterationsMillis;
    public BubbleSort(long sleepBetweenIterationsMillis) {
       this.sleepBetweenIterationsMillis = sleepBetweenIterationsMillis;
    }

    ...
    // iterate through the list bringing the highest value to the top
    // wait a certain number of millis
    Thread.sleep(sleepBetweenIterationsMillis);
    // loop
    ...
}

选择排序算法中的点来放置这些睡眠调用取决于您认为“迭代”是什么。除了注入睡眠值之外,您还可以调用某个睡眠管理器,该管理器可以动态更改睡眠值或根据用户输入进行更改。

public interface SleepManager {
   public void sleep();
}

public class BubbleSort {
    private SleepManager sleepManager;
    public BubbleSort(SleepManager sleepManager) {
       this.sleepManager = sleepManager;
    }

    ...
    // iterate through the list bringing the highest value to the top
    // call the manager which can dynamically slow or speed up the iterations
    sleepManager.sleep();
    // loop
    ...
}

我无法评论 MVC 问题。您将不得不围绕您尝试过的内容和想要完成的内容写另一个更具体的问题。

于 2012-04-12T15:34:34.710 回答