Skip to content

Commit ce80b19

Browse files
committed
Chapter 04 codes updated.
1 parent f427a6f commit ce80b19

File tree

21 files changed

+123
-518
lines changed

21 files changed

+123
-518
lines changed

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

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

3030
mergeSort(0, data.N()-1);
3131

32-
this.setData(0, data.N()-1, data.N());
32+
setData(0, data.N()-1, data.N()-1);
3333
}
3434

3535
private void mergeSort(int l, int r){

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
public class MergeSortData {
66

7-
private int[] numbers;
7+
public int[] numbers;
88
public int l, r;
99
public int mergeIndex;
1010

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public void run(){
3232
// 对 arr[i...i+sz-1] 和 arr[i+sz...i+2*sz-1] 进行归并
3333
merge(i, i+sz-1, Math.min(i+sz+sz-1,data.N()-1));
3434

35-
this.setData(0, data.N()-1, data.N());
35+
this.setData(0, data.N()-1, data.N()-1);
3636
}
3737

3838
private void merge(int l, int mid, int r){

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
public class MergeSortData {
66

7-
private int[] numbers;
7+
public int[] numbers;
88
public int l, r;
99
public int mergeIndex;
1010

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ public void paintComponent(Graphics g) {
6565

6666
// 具体绘制
6767
int w = canvasWidth/data.N();
68-
//AlgoVisHelper.setColor(g2d, AlgoVisHelper.Grey);
6968
for(int i = 0 ; i < data.N() ; i ++ ) {
7069
if ( i >= data.l && i <= data.r)
7170
AlgoVisHelper.setColor(g2d, AlgoVisHelper.Green);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ public class AlgoVisualizer {
77
private QuickSortData data;
88
private AlgoFrame frame;
99

10-
public AlgoVisualizer(int sceneWidth, int sceneHeight, int N, QuickSortData.Type dataType){
10+
public AlgoVisualizer(int sceneWidth, int sceneHeight, int N){
1111

1212
// 初始化数据
13-
data = new QuickSortData(N, sceneHeight, dataType);
13+
data = new QuickSortData(N, sceneHeight);
1414

1515
// 初始化视图
1616
EventQueue.invokeLater(() -> {
@@ -90,7 +90,7 @@ public static void main(String[] args) {
9090
int sceneHeight = 800;
9191
int N = 100;
9292

93-
AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, N, QuickSortData.Type.Default);
93+
AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, N);
9494

9595
}
9696
}

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

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,13 @@
44

55
public class QuickSortData {
66

7-
public enum Type{
8-
Default,
9-
NearlyOrdered
10-
}
11-
12-
public int[] numbers;
7+
private int[] numbers;
138
public int l, r;
149
public boolean[] fixedPivots;
1510
public int curPivot;
1611
public int curElement;
1712

18-
// 生成N个[0,randomBound)之间的随机数;nearlyOrdered控制随机数是否近乎有序
19-
public QuickSortData(int N, int randomBound, Type dataType){
13+
public QuickSortData(int N, int randomBound){
2014

2115
numbers = new int[N];
2216
fixedPivots = new boolean[N];
@@ -26,15 +20,6 @@ public QuickSortData(int N, int randomBound, Type dataType){
2620
fixedPivots[i] = false;
2721
}
2822

29-
if(dataType == Type.NearlyOrdered){
30-
Arrays.sort(numbers);
31-
int swapTime = (int)(0.02*N);
32-
for(int i = 0 ; i < swapTime; i ++){
33-
int a = (int)(Math.random()*N);
34-
int b = (int)(Math.random()*N);
35-
swap(a, b);
36-
}
37-
}
3823
}
3924

4025
public int N(){

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import java.util.Arrays;
2-
import java.util.Random;
32

43

54
public class QuickSortData {
@@ -9,13 +8,12 @@ public enum Type{
98
NearlyOrdered
109
}
1110

12-
public int[] numbers;
11+
private int[] numbers;
1312
public int l, r;
1413
public boolean[] fixedPivots;
1514
public int curPivot;
1615
public int curElement;
1716

18-
// 生成N个[0,randomBound)之间的随机数;nearlyOrdered控制随机数是否近乎有序
1917
public QuickSortData(int N, int randomBound, Type dataType){
2018

2119
numbers = new int[N];
@@ -28,7 +26,7 @@ public QuickSortData(int N, int randomBound, Type dataType){
2826

2927
if(dataType == Type.NearlyOrdered){
3028
Arrays.sort(numbers);
31-
int swapTime = (int)(0.02*N);
29+
int swapTime = (int)(0.01*N);
3230
for(int i = 0 ; i < swapTime; i ++){
3331
int a = (int)(Math.random()*N);
3432
int b = (int)(Math.random()*N);
@@ -37,6 +35,10 @@ public QuickSortData(int N, int randomBound, Type dataType){
3735
}
3836
}
3937

38+
public QuickSortData(int N, int randomBound){
39+
this(N, randomBound, Type.Default);
40+
}
41+
4042
public int N(){
4143
return numbers.length;
4244
}

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ public class AlgoFrame extends JFrame{
1010

1111
private int canvasWidth;
1212
private int canvasHeight;
13-
private JPanel canvas;
1413

1514
public AlgoFrame(String title, int canvasWidth, int canvasHeight){
1615

@@ -39,7 +38,7 @@ public AlgoFrame(String title){
3938

4039
// data
4140
QuickSortData data;
42-
public void setData(QuickSortData data){
41+
public void render(QuickSortData data){
4342
this.data = data;
4443
repaint();
4544
}
@@ -68,14 +67,14 @@ public void paintComponent(Graphics g) {
6867
int w = canvasWidth/data.N();
6968
//AlgoVisHelper.setColor(g2d, AlgoVisHelper.Grey);
7069
for(int i = 0 ; i < data.N() ; i ++ ) {
71-
if ( data.l != -1 && data.r != -1 && i >= data.l && i <= data.r)
70+
if ( i >= data.l && i <= data.r)
7271
AlgoVisHelper.setColor(g2d, AlgoVisHelper.Green);
7372
else
7473
AlgoVisHelper.setColor(g2d, AlgoVisHelper.Grey);
7574

76-
if( data.curPivot != -1 && i == data.curPivot )
75+
if( i == data.curPivot )
7776
AlgoVisHelper.setColor(g2d, AlgoVisHelper.Indigo);
78-
if( data.curElement != -1 && i == data.curElement)
77+
if( i == data.curElement)
7978
AlgoVisHelper.setColor(g2d, AlgoVisHelper.LightBlue);
8079
if( data.fixedPivots[i] )
8180
AlgoVisHelper.setColor(g2d, AlgoVisHelper.Red);

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.awt.geom.Rectangle2D;
55
import java.lang.InterruptedException;
66

7-
87
public class AlgoVisHelper {
98

109
private AlgoVisHelper(){}
@@ -31,36 +30,35 @@ private AlgoVisHelper(){}
3130
public static final Color Black = new Color(0x000000);
3231
public static final Color White = new Color(0xFFFFFF);
3332

34-
35-
static public void strokeCircle(Graphics2D g, int x, int y, int r){
33+
public static void strokeCircle(Graphics2D g, int x, int y, int r){
3634

3735
Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);
3836
g.draw(circle);
3937
}
4038

41-
static public void fillCircle(Graphics2D g, int x, int y, int r){
39+
public static void fillCircle(Graphics2D g, int x, int y, int r){
4240

4341
Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);
4442
g.fill(circle);
4543
}
4644

47-
static public void strokeRectangle(Graphics2D g, int x, int y, int w, int h){
45+
public static void strokeRectangle(Graphics2D g, int x, int y, int w, int h){
4846

4947
Rectangle2D rectangle = new Rectangle2D.Double(x, y, w, h);
5048
g.draw(rectangle);
5149
}
5250

53-
static public void fillRectangle(Graphics2D g, int x, int y, int w, int h){
51+
public static void fillRectangle(Graphics2D g, int x, int y, int w, int h){
5452

5553
Rectangle2D rectangle = new Rectangle2D.Double(x, y, w, h);
5654
g.fill(rectangle);
5755
}
5856

59-
static public void setColor(Graphics2D g, Color color){
57+
public static void setColor(Graphics2D g, Color color){
6058
g.setColor(color);
6159
}
6260

63-
static public void setStrokeWidth(Graphics2D g, int w){
61+
public static void setStrokeWidth(Graphics2D g, int w){
6462
int strokeWidth = w;
6563
g.setStroke(new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
6664
}

0 commit comments

Comments
 (0)