11var slider = document . getElementById ( "myRange" ) ;
22var slidevalue = document . getElementById ( "value" ) ;
33slidevalue . innerHTML = slider . value ;
4+ var sortSelection ;
45
56
67for ( i = 0 ; i < 5 ; i ++ ) {
7- var w = 810 / 5 ;
8+ var w = 200 / 5 ;
89 var num2 = addPx ( w ) ;
910 var n = Math . floor ( Math . random ( ) * 625 ) + 50 ;
1011 var num = addPx ( n ) ;
@@ -23,13 +24,13 @@ slider.oninput = function() {
2324 slidevalue . innerHTML = this . value ;
2425 numBoxes = this . value ;
2526 var obj = document . getElementsByClassName ( "box" ) ;
26-
27+
2728 while ( obj [ 0 ] ) {
2829 obj [ 0 ] . parentNode . removeChild ( obj [ 0 ] ) ;
2930 }
3031
3132 for ( i = 0 ; i < numBoxes ; i ++ ) {
32- var w = 810 / numBoxes ;
33+ var w = 200 / numBoxes ;
3334 var num2 = addPx ( w ) ;
3435 var n = Math . floor ( Math . random ( ) * 600 ) + 30 ;
3536 var num = addPx ( n ) ;
@@ -68,7 +69,11 @@ function removePx (str) {
6869
6970
7071async function Swap ( x , y ) {
72+ if ( sortSelection = 0 ) {
7173 await sleep ( ( - 22 ) * ( myCollection . length ) + 1120 ) ;
74+ } else if ( sortSelection = 1 ) {
75+ await sleep ( 25 ) ;
76+ }
7277 var temp = myCollection [ x ] . style . height ;
7378 myCollection [ x ] . style . height = myCollection [ y ] . style . height ;
7479 myCollection [ y ] . style . height = temp ;
@@ -85,7 +90,8 @@ function sleep(ms) {
8590async function BubbleSort ( ) {
8691 var isSorted = 0 ;
8792 var lastUnsorted = myCollection . length - 1 ;
88-
93+ sortSelection = 0 ;
94+
8995 while ( isSorted == 0 ) {
9096 isSorted = 1 ;
9197 for ( i = 0 ; i < lastUnsorted ; i ++ ) {
@@ -116,14 +122,47 @@ async function BubbleSort() {
116122 }
117123}
118124
125+ // QuickSort
126+
127+ async function Partition ( start , end ) {
128+ var pivot = removePx ( myCollection [ end ] . style . height ) ;
129+ var partitionIndex = start ;
130+
131+ for ( i = start ; i < end ; i ++ ) {
132+ if ( removePx ( myCollection [ i ] . style . height ) >= pivot ) {
133+ myCollection [ i ] . style . background = "red" ;
134+ myCollection [ i ] . style . color = "red" ;
135+ myCollection [ partitionIndex ] . style . background = "red" ;
136+ myCollection [ partitionIndex ] . style . color = "red" ;
137+ await Swap ( i , partitionIndex ) ;
138+ myCollection [ i ] . style . background = "bisque" ;
139+ myCollection [ i ] . style . color = "bisque" ;
140+ myCollection [ partitionIndex ] . style . background = "bisque" ;
141+ myCollection [ partitionIndex ] . style . color = "bisque" ;
142+ partitionIndex ++ ;
143+ }
144+ }
145+ await Swap ( partitionIndex , end ) ;
146+ return partitionIndex ;
147+ }
119148
149+ async function QuickSort ( start , end ) {
150+ if ( start < end ) {
151+ var partitionIndex = await Partition ( start , end ) ;
152+ await QuickSort ( start , partitionIndex - 1 ) ;
153+ await QuickSort ( partitionIndex + 1 , end ) ;
154+ }
155+ }
120156
157+ function doQuickSort ( ) {
158+ sortSelection = 1 ;
159+ QuickSort ( 0 , myCollection . length - 1 ) ;
160+ }
121161
122- // MergeSort
162+ // MergeSort
123163
124164
125165
126- //QuickSort
127166
128167
129168
0 commit comments