0

私の質問は、私が現在取り組んでいる Java プロジェクトに関するものです。さまざまな異なる並べ替えアルゴリズムの仕組みを概念的/視覚的に示すために、シミュレーションを作成する必要があります。これらには、バブル ソート、挿入ソート、マージ ソートなどがあります。これにより、ユーザーはプロセスの各ステップを実行するか、実行したい速度を選択できるようにする必要があります。これは、スレッドを使用して行う必要があります。並べ替えアルゴリズムはすべて 1 つのクラス内にあり、ユーザーが最後から選択したものはスレッド内で実行されます。

例: sort.bubbleSort(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の質問にコメントすることはできません。何を試し、何を達成したいのかについて、もう1つ具体的な質問を書く必要があります。

于 2012-04-12T15:34:34.710 に答える