package sortingstuff;
// @Author Damien Bell
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.Timer;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import java.util.Random;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.Thread;
public class SortingStuff
extends JFrame{ public SortingStuff(){
initUI();
}
public static class thread2
implements Runnable{ public void run() {
System.
out.
println("thread " +Thread.
currentThread().
getName()); }
public static void bubbleSort
(final String numbers
[],
final JButton numButton
[]){ System.
out.
println("thread " +Thread.
currentThread().
getName()); for (int k = 0; k < numbers.length - 1; k++)
{
boolean isSorted = true;
for (int i = 1; i < numbers.length - k; i++)
{
{
isSorted = false;
try{
String tempVariable
= numbers
[i
]; numbers[i] = numbers[i - 1];
numbers[i - 1] = tempVariable;
String str1
= numButton
[i
].
getText(); numButton
[i
].
setBackground(Color.
RED); numButton
[i
-1].
setBackground(Color.
RED); Thread.
currentThread().
sleep(200); numButton[i].setText(numButton[i-1].getText());
numButton[i-1].setText(str1);
numButton[i].setBackground(null);
numButton[i-1].setBackground(null);
int delay = 0; //milliseconds
// ActionListener taskPerformer = new ActionListener() {
// public void actionPerformed(ActionEvent evt) {
// }
// };
// new Timer(delay, taskPerformer).start();
}
}
if (isSorted)
break;
}
}
}
public final void genRandom
(String strArray
[]){ for(int i=0; i<strArray.length; i++){
strArray
[i
] = Integer.
toString(Math.
abs(generator.
nextInt()%100
)); }
}
public final void initUI(){
getContentPane().add(panel);
genRandom(numbers);
for(int i=0; i<numbers.length; i++){
numButton[i].setText(numbers[i]);
panel.add(numButton[i]);
}
for(int i=0; i<4; i++){
spacer[i].setText("");
panel.add(spacer[i]);
}
Bubble.setText("Bubble Sort");
System.
out.
println("thread " +Thread.
currentThread().
getName()); thread2.bubbleSort(numbers, numButton);
}
});
panel.add(Bubble);
Merge.setText("Merge Sort");
thread2.bubbleSort(numbers, numButton);
}
});
panel.add(Merge);
Insertion.setText("Insertion Sort");
System.
out.
println("thread " +Thread.
currentThread().
getName()); thread2.bubbleSort(numbers, numButton);
}
});
panel.add(Insertion);
Heap.setText("Heap Sort");
thread2.bubbleSort(numbers, numButton);
}
});
panel.add(Heap);
Randomize.setText("Randomize");
genRandom(numbers);
}
});
panel.add(Heap);
for(int i=4; i<7; i++){
spacer[i].setText("");
panel.add(spacer[i]);
}
add(panel);
setTitle("Test");
setSize(1200,200);
setLocationRelativeTo(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public static void main
(String[] args
){ public void run(){
thread.start();
double startTime
= System.
nanoTime(); SortingStuff ss = new SortingStuff();
ss.setVisible(true);
double endTime
= System.
nanoTime(); double elapsedTime = endTime - startTime;
System.
out.
println("This operation took " + elapsedTime
+ " nanoseconds, which is :" + ((elapsedTime
/1000000)/1000) + " seconds."); }
});
}
}