File tree Expand file tree Collapse file tree 1 file changed +68
-0
lines changed
Divide and Conquer/Quicksort Expand file tree Collapse file tree 1 file changed +68
-0
lines changed Original file line number Diff line number Diff line change 1+ import org .algorithm_visualizer .*;
2+
3+ import java .util .Arrays ;
4+
5+ class Main {
6+
7+ private static ChartTracer chartTracer = new ChartTracer ();
8+
9+ private static LogTracer logTracer = new LogTracer ("Console" );
10+
11+ private static Array1DTracer tracer = new Array1DTracer ();
12+
13+ private static Integer [] array = (Integer []) new Randomize .Array1D (15 , new Randomize .Integer (1 , 20 )).create ();
14+
15+ public static void main (String [] args ) {
16+ tracer .set (array );
17+ tracer .chart (chartTracer );
18+ Layout .setRoot (new VerticalLayout (new Commander []{chartTracer , tracer , logTracer }));
19+ logTracer .printf ("original array = %s\n " , Arrays .toString (array ));
20+
21+ Tracer .delay ();
22+ quickSort (array , 0 , array .length - 1 );
23+ logTracer .printf ("sorted array = %s\n " , Arrays .toString (array ));
24+ }
25+
26+ public static void quickSort (Integer [] arr , int left , int right ) {
27+ int l , r , s ;
28+ while (right > left ) {
29+ l = left ;
30+ r = right ;
31+ s = arr [left ];
32+ while (l < r ) {
33+ tracer .select (left );
34+ tracer .select (right );
35+ Tracer .delay ();
36+ while (arr [r ] > s ) {
37+ tracer .select (r );
38+ Tracer .delay ();
39+ tracer .deselect (r );
40+ r --;
41+ }
42+ arr [l ] = arr [r ];
43+ tracer .patch (l , arr [r ]);
44+ Tracer .delay ();
45+ tracer .depatch (l );
46+ while (s >= arr [l ] && l < r ) {
47+ tracer .select (l );
48+ Tracer .delay ();
49+ tracer .deselect (l );
50+ l ++;
51+ }
52+ arr [r ] = arr [l ];
53+ tracer .patch (r , arr [l ]);
54+ Tracer .delay ();
55+ tracer .depatch (r );
56+ tracer .deselect (left );
57+ tracer .deselect (right );
58+ }
59+ arr [l ] = s ;
60+ tracer .patch (l , s );
61+ Tracer .delay ();
62+ tracer .depatch (l );
63+ quickSort (arr , left , l - 1 );
64+ left = l + 1 ;
65+ }
66+ }
67+
68+ }
You can’t perform that action at this time.
0 commit comments