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{
numbers = numbers1;
numButton = numButton1;
}
Sort.bubbleSort(numbers, numButton);
}
public void run() {
doSort(numbers, numButton);
}
}
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 genReRandom
(String numbers
[],
JButton numButton
[]){ for(int i=0; i<numButton.length; i++){
numButton[i].setText(str1);
numbers[i]=str1;
}
}
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<3; i++){
spacer[i].setText("");
panel.add(spacer[i]);
}
Bubble.setText("<html> Bubble <br> <center>Sort</center></html>");
System.
out.
println("thread " +Thread.
currentThread().
getName()); thread2 myThread2 = new thread2(numbers, numButton);
new Thread(myThread2
).
start(); }
});
panel.add(Bubble);
Merge.setText("<html> Merge <br> <center>Sort</center></html>");
Sort.bubbleSort(numbers, numButton);
}
});
panel.add(Merge);
Insertion.setText("<html> Insertion<br> <center>Sort</center></html>");
Sort.bubbleSort(numbers, numButton);
}
});
panel.add(Insertion);
Heap.setText("<html> Heap <br> <center>Sort</center></html>");
Sort.bubbleSort(numbers, numButton);
}
});
panel.add(Heap);
Randomize.setText("Randomize");
genReRandom(numbers, numButton);
}
});
panel.add(Randomize);
for(int i=4; i<7; i++){
spacer[i].setText("");
panel.add(spacer[i]);
}
add(panel);
setTitle("Test");
setSize(1600,300);
setLocationRelativeTo(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public static void main
(String[] args
){ public void run(){
SortingStuff ss = new SortingStuff();
ss.setVisible(true);
}
});
}
}
/////////////////////////////////////////////////////////////////
package sortingstuff;
import java.awt.Color;
import javax.swing.JButton;
public class Sort {
public static void bubbleSort
(final String numbers
[],
final JButton numButton
[]){ double startTime
= System.
nanoTime(); System.
out.
println("thread " +Thread.
currentThread().
getName()); for (int k = 0; k < numbers.length - 1; k++){
boolean isSorted = true;
int delay500=500, delay750=750, delay2000=1500;
for (int i = 1; i < numbers.length - k; i++) {
numButton
[i
].
setBackground(Color.
YELLOW); numButton
[i
-1].
setBackground(Color.
YELLOW); try{
delay500 = doSlow.doSlow250(delay500);
if (Integer.
parseInt(numbers
[i
]) < Integer.
parseInt(numbers
[i
- 1]) ){
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); delay2000 = doSlow.doSlow250(delay2000);
numButton[i].setText(numButton[i-1].getText());
numButton[i-1].setText(str1);
numButton
[i
].
setBackground(Color.
GREEN); numButton
[i
-1].
setBackground(Color.
GREEN); delay750 = doSlow.doSlow250(delay2000);
numButton[i].setBackground(null);
numButton[i-1].setBackground(null);
}
numButton[i].setBackground(null);
numButton[i-1].setBackground(null);
}
if (isSorted){
double endTime
= System.
nanoTime(); double elapsedTime = endTime - startTime;
System.
out.
println("This operation took " + elapsedTime
+ " nanoseconds, which is :" + ((elapsedTime
/1000000)/1000) + " seconds."); break;
}
}
}
}
///////////////////////////////////////
package sortingstuff;
public class doSlow {
public static int doSlow250(int x){
return x;
}
}
/////////////////////////////////////