Skip to content

Commit b8954a9

Browse files
committed
Update sorts to receive ArrayController
1 parent 88c7ca1 commit b8954a9

29 files changed

+577
-500
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package array.visualizer;
2+
3+
import java.util.ArrayList;
4+
5+
public class ArrayController
6+
{
7+
public final int [] array;
8+
public final int length;
9+
public final ArrayList<Integer> marked;
10+
public long aa;
11+
public long comps;
12+
13+
public ArrayController(int length)
14+
{
15+
array = new int[length];
16+
this.length = length;
17+
marked = new ArrayList<>();
18+
aa = 0;
19+
comps = 0;
20+
}
21+
22+
void clearMarked()
23+
{
24+
for(int i = 0; i < length; i++)
25+
marked.set(i, -5);
26+
}
27+
28+
public int get(int index)
29+
{
30+
aa ++;
31+
return array[index];
32+
}
33+
34+
public int compare(int a, int b)
35+
{
36+
comps ++;
37+
return Integer.compare(array[a], array[b]);
38+
}
39+
}

src/array/visualizer/ArrayVisualizer.java

Lines changed: 151 additions & 153 deletions
Large diffs are not rendered by default.

src/array/visualizer/SortPrompt.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ public SortPrompt(JFrame f) {
2424
initComponents();
2525
jList2.setListData(ComparativeSorts);
2626
jList1.setListData(DistributiveSorts);
27-
setLocation(f.getX()+(f.getWidth()-getWidth())/2,f.getY()+(f.getHeight()-getHeight())/2);
27+
setLocation(f.getX()+(f.getWidth()-getWidth())/2, f.getY()+(f.getHeight()-getHeight())/2);
2828
setVisible(true);
2929
}
3030
public void reposition(){
31-
setLocation(f.getX()+(f.getWidth()-getWidth())/2,f.getY()+(f.getHeight()-getHeight())/2);
31+
setLocation(f.getX()+(f.getWidth()-getWidth())/2, f.getY()+(f.getHeight()-getHeight())/2);
3232
}
3333

3434

src/array/visualizer/UtilFrame.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ public UtilFrame(JFrame f) {
2424
this.f = f;
2525
setUndecorated(true);
2626
initComponents();
27-
setLocation(f.getX()+f.getWidth(),f.getY()+29);
27+
setLocation(f.getX()+f.getWidth(), f.getY()+29);
2828
setAlwaysOnTop(true);
2929
setVisible(true);
3030
}
3131

3232
public void reposition(){
3333
toFront();
34-
setLocation(Math.min((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth()-getWidth(),f.getX()+f.getWidth()),f.getY()+29);
34+
setLocation(Math.min((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth()-getWidth(), f.getX()+f.getWidth()), f.getY()+29);
3535
if(v!= null && v.isVisible())
3636
v.reposition();
3737
}

src/array/visualizer/ViewPrompt.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ public ViewPrompt(JFrame f) {
2222
setAlwaysOnTop(true);
2323
setUndecorated(true);
2424
initComponents();
25-
setLocation(f.getX()+(f.getWidth()-getWidth())/2,f.getY()+(f.getHeight()-getHeight())/2);
25+
setLocation(f.getX()+(f.getWidth()-getWidth())/2, f.getY()+(f.getHeight()-getHeight())/2);
2626
setVisible(true);
2727
}
2828

2929
public void reposition(){
30-
setLocation(f.getX()+(f.getWidth()-getWidth())/2,f.getY()+(f.getHeight()-getHeight())/2);
30+
setLocation(f.getX()+(f.getWidth()-getWidth())/2, f.getY()+(f.getHeight()-getHeight())/2);
3131
}
3232

3333
/**

src/array/visualizer/sort/BitonicSort.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@
44
*/
55
package array.visualizer.sort;
66

7-
import static array.visualizer.ArrayVisualizer.*;
7+
import array.visualizer.ArrayController;
88

99
/**
1010
*
1111
* @author S630690
1212
*/
1313
public class BitonicSort {
14-
public static void bitonicSort(){
15-
bitonicMerge(0,array.length,true);
14+
public static void bitonicSort(final ArrayController ac){
15+
bitonicMerge(ac, 0, ac.length, true);
1616
}
1717

18-
public static void bitonicMerge(int start, int end, boolean dir){
18+
public static void bitonicMerge(final ArrayController ac, int start, int end, boolean dir){
1919
int mid = (start+end)/2;
2020
if(start==mid)
2121
return;
22-
bitonicMerge(start, mid, true);
23-
bitonicMerge(mid, end, false);
22+
bitonicMerge(ac, start, mid, true);
23+
bitonicMerge(ac, mid, end, false);
2424

2525
int low = start;
2626
int high = end;

src/array/visualizer/sort/BogoSort.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
11
package array.visualizer.sort;
22

3+
import array.visualizer.ArrayController;
4+
35
import static array.visualizer.ArrayVisualizer.*;
46
import static array.visualizer.utils.Swaps.*;
57

68
public class BogoSort {
7-
public static boolean bogoIsSorted(int[] arr){
8-
for(int i = 1; i < arr.length; i++){
9-
comps++;
10-
aa++;
11-
marked.set(1, i);
12-
marked.set(2,i-1);
9+
public static boolean bogoIsSorted(final ArrayController ac){
10+
for(int i = 1; i < ac.length; i++){
11+
ac.comps++;
12+
ac.aa++;
13+
ac.marked.set(1, i);
14+
ac.marked.set(2, i-1);
1315
sleep(1);
14-
if(arr[i]<arr[i-1])
16+
if(ac.array[i]<ac.array[i-1])
1517
return false;
1618
}
1719
return true;
1820
}
1921

20-
public static void bogoSort(){
21-
while(!bogoIsSorted(array)){
22-
for(int i = 0; i < array.length; i++){
23-
swap(array, i, (int)(Math.random()*array.length));
22+
public static void bogoSort(final ArrayController ac){
23+
while(!bogoIsSorted(ac)){
24+
for(int i = 0; i < ac.length; i++){
25+
swap(ac, i, (int)(Math.random()* ac.length));
2426
sleep(1);
2527
}
2628
}

src/array/visualizer/sort/BubbleSort.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*/
55
package array.visualizer.sort;
66

7+
import array.visualizer.ArrayController;
8+
79
import static array.visualizer.ArrayVisualizer.*;
810
import static array.visualizer.utils.Swaps.*;
911

@@ -12,19 +14,19 @@
1214
* @author S630690
1315
*/
1416
public class BubbleSort {
15-
public static void bubbleSort() throws Exception{
16-
for(int i = array.length-1; i > 0; i--){
17+
public static void bubbleSort(final ArrayController ac) throws Exception{
18+
for(int i = ac.length-1; i > 0; i--){
1719
for(int j = 0; j < i; j++){
1820
sleep(0.005);
19-
if(array[j]>array[j+1]){
20-
comps++;
21-
swap(array, j, j+1,0.01);
21+
if(ac.array[j]>ac.array[j+1]){
22+
ac.comps++;
23+
swap(ac, j, j+1, 0.01);
2224
}else{
23-
marked.set(1,j+1);
24-
marked.set(2,-5);
25+
ac.marked.set(1, j+1);
26+
ac.marked.set(2, -5);
2527
}
2628
}
27-
//marked.set(0,i);
29+
//marked.set(0, i);
2830
}
2931
}
3032
}

src/array/visualizer/sort/CocktailShaker.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,27 @@
44
*/
55
package array.visualizer.sort;
66

7-
import static array.visualizer.ArrayVisualizer.*;
7+
import array.visualizer.ArrayController;
8+
89
import static array.visualizer.utils.Swaps.*;
910

1011
/**
1112
*
1213
* @author S630690
1314
*/
1415
public class CocktailShaker {
15-
public static void cocktailShakerSort(){
16+
public static void cocktailShakerSort(final ArrayController ac){
1617
int i = 0;
17-
while(i<array.length/2){
18-
for(int j = i; j < array.length-i-1; j++){
19-
comps++;
20-
if(array[j]>array[j+1])
21-
swap(array, j, j+1, 0.022);
18+
while(i< ac.length/2){
19+
for(int j = i; j < ac.length-i-1; j++){
20+
ac.comps++;
21+
if(ac.array[j]>ac.array[j+1])
22+
swap(ac, j, j+1, 0.022);
2223
}
23-
for(int j = array.length-i-1; j > i; j--){
24-
comps++;
25-
if(array[j]<array[j-1])
26-
swap(array, j, j-1, 0.022);
24+
for(int j = ac.length-i-1; j > i; j--){
25+
ac.comps++;
26+
if(ac.array[j]<ac.array[j-1])
27+
swap(ac, j, j-1, 0.022);
2728
}
2829
i++;
2930
}

src/array/visualizer/sort/CountingSort.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*/
55
package array.visualizer.sort;
66

7+
import array.visualizer.ArrayController;
8+
79
import static array.visualizer.ArrayVisualizer.*;
810
import static array.visualizer.utils.Analysis.*;
911

@@ -12,23 +14,23 @@
1214
* @author S630690
1315
*/
1416
public class CountingSort {
15-
public static void countingSort() throws Exception {
16-
int max = analyzemax();
17+
public static void countingSort(final ArrayController ac) throws Exception {
18+
int max = analyzemax(ac);
1719
int[] counts = new int[max+1];
18-
for(int i = 0; i < array.length; i++){
19-
marked.set(1,i);
20+
for(int i = 0; i < ac.length; i++){
21+
ac.marked.set(1, i);
2022
sleep(2);
21-
counts[array[i]]++;
22-
aa++;
23+
counts[ac.array[i]]++;
24+
ac.aa++;
2325
}
2426
int x = 0;
25-
for(int i = 0; i < array.length; i++){
27+
for(int i = 0; i < ac.length; i++){
2628
if(counts[x]==0)
2729
x++;
28-
array[i]=x;
29-
aa++;
30+
ac.array[i]=x;
31+
ac.aa++;
3032
counts[x]--;
31-
marked.set(1, i);
33+
ac.marked.set(1, i);
3234
sleep(2);
3335
}
3436
}

0 commit comments

Comments
 (0)