Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit a40f1df

Browse files
committedSep 1, 2017
Chapter 04 codes updated.
1 parent 23e454e commit a40f1df

File tree

18 files changed

+46
-32
lines changed

18 files changed

+46
-32
lines changed
 

‎04-Sort-Visualization/01-Selection-Sort-Visualization/src/AlgoFrame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public AlgoFrame(String title){
3232
public int getCanvasHeight(){return canvasHeight;}
3333

3434
// data
35-
SelectionSortData data;
35+
private SelectionSortData data;
3636
public void render(SelectionSortData data){
3737
this.data = data;
3838
repaint();

‎04-Sort-Visualization/02-More-about-Selection-Sort-Visualization/src/AlgoFrame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public AlgoFrame(String title){
3232
public int getCanvasHeight(){return canvasHeight;}
3333

3434
// data
35-
SelectionSortData data;
35+
private SelectionSortData data;
3636
public void render(SelectionSortData data){
3737
this.data = data;
3838
repaint();

‎04-Sort-Visualization/03-Insertion-Sort-Visualization/src/AlgoFrame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public AlgoFrame(String title){
3232
public int getCanvasHeight(){return canvasHeight;}
3333

3434
// data
35-
InsertionSortData data;
35+
private InsertionSortData data;
3636
public void render(InsertionSortData data){
3737
this.data = data;
3838
repaint();

‎04-Sort-Visualization/04-Insertion-Sort-with-Nearly-Ordered-Array/src/AlgoFrame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public AlgoFrame(String title){
3232
public int getCanvasHeight(){return canvasHeight;}
3333

3434
// data
35-
InsertionSortData data;
35+
private InsertionSortData data;
3636
public void render(InsertionSortData data){
3737
this.data = data;
3838
repaint();

‎04-Sort-Visualization/06-Merge-Sort-Visualization/01-Merge-Sort-TD-Visualization/src/AlgoFrame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public AlgoFrame(String title){
3232
public int getCanvasHeight(){return canvasHeight;}
3333

3434
// data
35-
MergeSortData data;
35+
private MergeSortData data;
3636
public void render(MergeSortData data){
3737
this.data = data;
3838
repaint();

‎04-Sort-Visualization/06-Merge-Sort-Visualization/02-Merge-Sort-BU-Visualization/src/AlgoFrame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public AlgoFrame(String title){
3232
public int getCanvasHeight(){return canvasHeight;}
3333

3434
// data
35-
MergeSortData data;
35+
private MergeSortData data;
3636
public void render(MergeSortData data){
3737
this.data = data;
3838
repaint();

‎04-Sort-Visualization/07-Quick-Sort-Visualization/src/AlgoFrame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public AlgoFrame(String title){
3737
public int getCanvasHeight(){return canvasHeight;}
3838

3939
// data
40-
QuickSortData data;
40+
private QuickSortData data;
4141
public void render(QuickSortData data){
4242
this.data = data;
4343
repaint();

‎04-Sort-Visualization/07-Quick-Sort-Visualization/src/AlgoVisualizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void run(){
2828

2929
quickSort(0, data.N()-1);
3030

31-
setData(0, data.N()-1, -1, -1, -1);
31+
setData(-1, -1, -1, -1, -1);
3232
}
3333

3434
private void quickSort(int l, int r){

‎04-Sort-Visualization/07-Quick-Sort-Visualization/src/QuickSortData.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import java.util.Arrays;
2-
import java.util.Random;
3-
41

52
public class QuickSortData {
63

‎04-Sort-Visualization/08-Quick-Sort-Visualization-with-Random-Pivot/src/AlgoFrame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public AlgoFrame(String title){
3737
public int getCanvasHeight(){return canvasHeight;}
3838

3939
// data
40-
QuickSortData data;
40+
private QuickSortData data;
4141
public void render(QuickSortData data){
4242
this.data = data;
4343
repaint();

‎04-Sort-Visualization/08-Quick-Sort-Visualization-with-Random-Pivot/src/AlgoVisualizer.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ public AlgoVisualizer(int sceneWidth, int sceneHeight, int N, QuickSortData.Type
2222
});
2323
}
2424

25+
public AlgoVisualizer(int sceneWidth, int sceneHeight, int N){
26+
this(sceneWidth, sceneHeight, N, QuickSortData.Type.Default);
27+
}
28+
2529
public void run(){
2630

2731
setData(-1, -1, -1, -1, -1);
@@ -54,9 +58,9 @@ private void quickSort(int l, int r){
5458
private int partition(int l, int r){
5559

5660
int p = (int)(Math.random()*(r-l+1)) + l;
57-
data.swap(l, p);
58-
setData(l, r, -1, l, p);
61+
setData(l, r, -1, p, -1);
5962

63+
data.swap(l, p);
6064
int v = data.get(l);
6165
setData(l, r, -1, l, -1);
6266

‎04-Sort-Visualization/09-Two-Ways-Quick-Sort-Visualization/01-Quick-Sort-Visualization-with-Almost-Identical-Items-Problem/src/AlgoFrame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public AlgoFrame(String title){
3737
public int getCanvasHeight(){return canvasHeight;}
3838

3939
// data
40-
QuickSortData data;
40+
private QuickSortData data;
4141
public void render(QuickSortData data){
4242
this.data = data;
4343
repaint();

‎04-Sort-Visualization/09-Two-Ways-Quick-Sort-Visualization/01-Quick-Sort-Visualization-with-Almost-Identical-Items-Problem/src/AlgoVisualizer.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ public class AlgoVisualizer {
1010
public AlgoVisualizer(int sceneWidth, int sceneHeight, int N, QuickSortData.Type dataType){
1111

1212
// 初始化数据
13-
int randomBound = dataType == QuickSortData.Type.Identical ? sceneHeight/2 : sceneHeight;
14-
data = new QuickSortData(N, randomBound, dataType);
13+
data = new QuickSortData(N, sceneHeight, dataType);
1514

1615
// 初始化视图
1716
EventQueue.invokeLater(() -> {
@@ -23,6 +22,10 @@ public AlgoVisualizer(int sceneWidth, int sceneHeight, int N, QuickSortData.Type
2322
});
2423
}
2524

25+
public AlgoVisualizer(int sceneWidth, int sceneHeight, int N){
26+
this(sceneWidth, sceneHeight, N, QuickSortData.Type.Identical);
27+
}
28+
2629
public void run(){
2730

2831
setData(-1, -1, -1, -1, -1);
@@ -52,9 +55,9 @@ private void quickSort(int l, int r){
5255
private int partition(int l, int r){
5356

5457
int p = (int)(Math.random()*(r-l+1)) + l;
55-
data.swap(l, p);
56-
setData(l, r, -1, l, p);
58+
setData(l, r, -1, p, -1);
5759

60+
data.swap(l, p);
5861
int v = data.get(l);
5962
setData(l, r, -1, l, -1);
6063

‎04-Sort-Visualization/09-Two-Ways-Quick-Sort-Visualization/01-Quick-Sort-Visualization-with-Almost-Identical-Items-Problem/src/QuickSortData.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@ public QuickSortData(int N, int randomBound, Type dataType){
2222

2323
int lBound = 1;
2424
int rBound = randomBound;
25-
if(dataType == Type.Identical)
26-
lBound = rBound;
25+
if(dataType == Type.Identical){
26+
int avgNumber = (lBound + rBound) / 2;
27+
lBound = avgNumber;
28+
rBound = avgNumber;
29+
}
2730

2831
for( int i = 0 ; i < N ; i ++) {
2932
numbers[i] = (int)(Math.random()*(rBound-lBound+1)) + lBound;

‎04-Sort-Visualization/09-Two-Ways-Quick-Sort-Visualization/02-Two-Ways-Quick-Sort-Visualization/src/AlgoFrame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public AlgoFrame(String title){
3232
public int getCanvasHeight(){return canvasHeight;}
3333

3434
// data
35-
TwoWaysQuickSortData data;
35+
private TwoWaysQuickSortData data;
3636
public void render(TwoWaysQuickSortData data){
3737
this.data = data;
3838
repaint();

‎04-Sort-Visualization/09-Two-Ways-Quick-Sort-Visualization/02-Two-Ways-Quick-Sort-Visualization/src/AlgoVisualizer.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22

33
public class AlgoVisualizer {
44

5-
private static int DELAY = 40;
5+
private static int DELAY = 20;
66

77
private TwoWaysQuickSortData data;
88
private AlgoFrame frame;
99

1010
public AlgoVisualizer(int sceneWidth, int sceneHeight, int N, TwoWaysQuickSortData.Type dataType){
1111

1212
// 初始化数据
13-
int randomBound = dataType == TwoWaysQuickSortData.Type.Identical ? sceneHeight/2 : sceneHeight;
14-
data = new TwoWaysQuickSortData(N, randomBound, dataType);
13+
data = new TwoWaysQuickSortData(N, sceneHeight, dataType);
1514

1615
// 初始化视图
1716
EventQueue.invokeLater(() -> {
@@ -23,13 +22,17 @@ public AlgoVisualizer(int sceneWidth, int sceneHeight, int N, TwoWaysQuickSortDa
2322
});
2423
}
2524

25+
public AlgoVisualizer(int sceneWidth, int sceneHeight, int N){
26+
this(sceneWidth, sceneHeight, N, TwoWaysQuickSortData.Type.Default);
27+
}
28+
2629
public void run(){
2730

2831
setData(-1, -1, -1, -1, -1, -1);
2932

3033
quickSort2Ways(0, data.N()-1);
3134

32-
setData(0, data.N()-1, -1, -1, -1, -1);
35+
setData(-1, -1, -1, -1, -1, -1);
3336
}
3437

3538
private void quickSort2Ways(int l, int r){
@@ -52,10 +55,11 @@ private void quickSort2Ways(int l, int r){
5255
private int partition(int l, int r){
5356

5457
int p = (int)(Math.random()*(r-l+1)) + l;
55-
data.swap(l, p);
56-
setData(l, r, -1, l, -1, -1);
58+
setData(l, r, -1, p, -1, -1);
5759

60+
data.swap(l, p);
5861
int v = data.get(l);
62+
setData(l, r, -1, l, -1, -1);
5963

6064
// arr[l+1...i) <= v; arr(j...r] >= v
6165
int i = l+1, j = r;
@@ -105,9 +109,9 @@ public static void main(String[] args) {
105109
int sceneHeight = 800;
106110
int N = 100;
107111

108-
// AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, N, TwoWaysQuickSortData.Type.Default);
112+
AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, N, TwoWaysQuickSortData.Type.Default);
109113
// AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, N, TwoWaysQuickSortData.Type.NearlyOrdered);
110-
AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, N, TwoWaysQuickSortData.Type.Identical);
114+
// AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, N, TwoWaysQuickSortData.Type.Identical);
111115

112116
}
113117
}

‎04-Sort-Visualization/09-Two-Ways-Quick-Sort-Visualization/02-Two-Ways-Quick-Sort-Visualization/src/TwoWaysQuickSortData.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@ public TwoWaysQuickSortData(int N, int randomBound, Type dataType){
2222

2323
int lBound = 1;
2424
int rBound = randomBound;
25-
if(dataType == Type.Identical)
26-
lBound = rBound;
25+
if(dataType == Type.Identical){
26+
int avgNumber = (lBound + rBound) / 2;
27+
lBound = avgNumber;
28+
rBound = avgNumber;
29+
}
2730

2831
for( int i = 0 ; i < N ; i ++) {
2932
numbers[i] = (int)(Math.random()*(rBound-lBound+1)) + lBound;

‎04-Sort-Visualization/Chapter-04.key

44.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)
Please sign in to comment.