0

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

sort.bubbleSort(オブジェクト); <オブジェクトはソートされるオブジェクトの配列です。

私の問題は、スレッドの速度を操作する方法がわかりません。ステップごとに、アルゴリズムの各行が実行された後に一時停止する必要があります。このプロジェクトはMVCも実装しています。スレッドはContollerパッケージにあり、ソートクラスはModelにあります。これで私を助けることができる人なら大いに感謝します。

+0

@Gray Done。手伝ってくれますか? – Granttastic

答えて

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の質問にはコメントできません。あなたは、あなたが試したことと達成したいことを中心に、より具体的な別の質問を書く必要があります。

+0

Greyの提案に追加するだけで、 'System.currentTimeMillis()'を利用して実行開始時の時刻を取得し、定期的にチェックして、その時点で必要な遅延の長さをプログラム(これは、ソートされるデータが可変である場合に便利です)。 –

+0

ありがとう@Youssef。私は、 'currentTimeMillis()'を使うことで、ソートアルゴリズムの中で競技場のレベルを上げるかもしれないと心配しています。私はOPが速いか遅いアルゴリズムを表示しようとしていると思います。 N^2であるバブルソートが反復ごとに少なくなることは望ましくありません。 – Gray

+0

ohhhhhh !! @Gray ...選択された速度に応じて、別のアルゴリズムが選択されるという要件がありますか?質問者から明確になることはできますか? –

関連する問題