@@ -174,7 +174,6 @@ export function run_msort() {
174
174
175
175
let A = nodes ;
176
176
let B = [ ...entire_num_array ] . fill ( undefined ) ;
177
- let runlength = 1 ; // length of run to merge
178
177
let runcount = 0 ; // number of runs merged
179
178
180
179
chunker . add ( 'Main' , ( vis , a , b , c_length , c_count ) => {
@@ -208,7 +207,7 @@ export function run_msort() {
208
207
209
208
highlight2Runlength(vis, left_2, mid_2, right_2, colorA, colorB);*/
210
209
211
- } , [ runlength , left , runcount ] ) ;
210
+ } , [ left , runcount ] ) ;
212
211
213
212
chunker . add ( 'runcount' , ( vis , c_rcount ) => {
214
213
@@ -232,7 +231,7 @@ export function run_msort() {
232
231
//assignVarToA(vis, ('size = ' + (size)), undefined, size);
233
232
234
233
assignVarToA ( vis , 'mid' , c_mid , size ) ;
235
- } , [ mid , runlength ] ) ;
234
+ } , [ mid ] ) ;
236
235
237
236
while ( mid < size && A [ mid ] <= A [ mid + 1 ] ) {
238
237
chunker . add ( 'FirstRunWhile' , ( vis , c_left , c_mid , c_right ) => {
@@ -247,6 +246,7 @@ export function run_msort() {
247
246
248
247
let right = mid + 1 ;
249
248
249
+
250
250
chunker . add ( 'right' , ( vis , c_right ) => {
251
251
assignVarToA ( vis , 'right' , c_right , size ) ;
252
252
} , [ right ] ) ;
@@ -313,12 +313,13 @@ export function run_msort() {
313
313
if ( ! ( ap1 <= max1 && ap2 <= max2 ) ) break ;
314
314
315
315
chunker . add ( 'MergeWhile' , ( vis , a , c_left , c_right , c_mid , c_ap1 , c_max1 , c_ap2 , c_max2 , c_bp , c_rlength ) => {
316
+ console . log ( "c_left, c_mid, c_right" + left + " " + mid + " " + right ) ;
316
317
vis . array . set ( a , 'msort_arr_nat' ) ;
317
318
displayMergeLabels ( vis , c_ap1 , c_max1 , c_ap2 , c_max2 , c_bp , size ) ;
318
319
// future color: should be colorA & colorB
319
320
highlight2Runlength ( vis , c_left , c_mid , c_right , colorA , colorA ) ;
320
321
set_simple_stack ( vis . array , [ c_rlength ] ) ;
321
- } , [ A , left , right , mid , ap1 , max1 , ap2 , max2 , bp , runlength ] ) ;
322
+ } , [ A , left , right , mid , ap1 , max1 , ap2 , max2 , bp ] ) ;
322
323
323
324
chunker . add ( 'findSmaller' , ( ) => {
324
325
// no animation
@@ -340,7 +341,7 @@ export function run_msort() {
340
341
// highlight sorted elements green (colorC)
341
342
for ( let i = c_left ; i <= c_bp ; i ++ ) highlightB ( vis , i , colorC ) ;
342
343
//set_simple_stack(vis.array, [c_rlength]);
343
- } , [ A , B , ap1 , max1 , ap2 , max2 , bp , left , right , mid , runlength ] ) ;
344
+ } , [ A , B , ap1 , max1 , ap2 , max2 , bp , left , right , mid ] ) ;
344
345
345
346
ap1 = ap1 + 1 ;
346
347
chunker . add ( 'ap1++' , ( vis , c_ap1 ) => {
@@ -371,7 +372,7 @@ export function run_msort() {
371
372
// highlight sorted elements green / colorB
372
373
for ( let i = c_left ; i <= c_bp ; i ++ ) highlightB ( vis , i , 'green' )
373
374
//set_simple_stack(vis.array, [c_rlength]);
374
- } , [ A , B , ap1 , ap2 , bp , max1 , max2 , left , right , mid , runlength ] ) ;
375
+ } , [ A , B , ap1 , ap2 , bp , max1 , max2 , left , right , mid ] ) ;
375
376
376
377
ap2 = ap2 + 1 ;
377
378
chunker . add ( 'ap2++' , ( vis , c_ap2 ) => {
@@ -407,7 +408,7 @@ export function run_msort() {
407
408
// future color: should be colorA & colorB
408
409
highlight2Runlength ( vis , c_left , c_mid , c_right , colorA , colorA ) ;
409
410
set_simple_stack ( vis . array , [ c_rlength ] ) ;
410
- } , [ A , B , ap1 , max1 , left , right , mid , bp , runlength ] ) ;
411
+ } , [ A , B , ap1 , max1 , left , right , mid , bp ] ) ;
411
412
412
413
for ( let i = ap2 ; i <= max2 ; i ++ ) {
413
414
B [ bp ] = A [ i ] ;
@@ -427,7 +428,7 @@ export function run_msort() {
427
428
// future color: should be colorA & colorB
428
429
highlight2Runlength ( vis , c_left , c_mid , c_right , colorA , colorA ) ;
429
430
set_simple_stack ( vis . array , [ c_rlength ] ) ;
430
- } , [ A , B , ap2 , max2 , left , right , mid , runlength ] ) ;
431
+ } , [ A , B , ap2 , max2 , left , right , mid ] ) ;
431
432
432
433
// copy merged elements from B to A
433
434
for ( let i = left ; i <= right ; i ++ ) {
@@ -442,7 +443,7 @@ export function run_msort() {
442
443
// highlight all sorted elements green
443
444
for ( let i = c_left ; i <= c_right ; i ++ ) highlight ( vis , i , colorC ) ;
444
445
set_simple_stack ( vis . array , [ c_rlength ] ) ;
445
- } , [ A , B , left , right , runlength ] ) ;
446
+ } , [ A , B , left , right ] ) ;
446
447
}
447
448
let left2 = left ; // this is the old left before it was updated
448
449
//if (right + 1 <= size) {
@@ -459,7 +460,7 @@ export function run_msort() {
459
460
displayRunlength(vis, c_rlength, size);
460
461
}*/
461
462
462
- } , [ runlength , runcount ] ) ;
463
+ } , [ runcount ] ) ;
463
464
chunker . add ( 'left2' , ( vis , old_left , c_left , c_right ) => {
464
465
// unhighlight all elements in A
465
466
for ( let i = old_left ; i <= c_right ; i ++ ) {
@@ -469,7 +470,7 @@ export function run_msort() {
469
470
470
471
} , [ left2 , left , right ] ) ;
471
472
472
- } while ( left < size ) ;
473
+ } while ( left < size - 1 ) ;
473
474
474
475
} while ( runcount > 1 ) ;
475
476
0 commit comments