Cocktail Sort | Sorts arrar a [ 0. . n - 1 ] using Cocktail sort ; reset the swapped flag on entering the loop , because it might be true from a previous iteration . ; loop from bottom to top same as the bubble sort ; if nothing moved , then array is sorted . ; otherwise , reset the swapped flag so that it can be used in the next stage ; move the end point back by one , because item at the end is in its rightful spot ; from top to bottom , doing the same comparison as in the previous stage ; increase the starting point , because the last stage would have moved the next smallest number to its rightful spot . ; Prints the array ; Driver code
function cocktailSort ( a ) { let swapped = true ; let start = 0 ; let end = a . length ; while ( swapped == true ) { swapped = false ; for ( let i = start ; i < end - 1 ; ++ i ) { if ( a [ i ] > a [ i + 1 ] ) { let temp = a [ i ] ; a [ i ] = a [ i + 1 ] ; a [ i + 1 ] = temp ; swapped = true ; } } if ( swapped == false ) break ; swapped = false ; end = end - 1 ; for ( let i = end - 1 ; i >= start ; i -- ) { if ( a [ i ] > a [ i + 1 ] ) { let temp = a [ i ] ; a [ i ] = a [ i + 1 ] ; a [ i + 1 ] = temp ; swapped = true ; } } start = start + 1 ; } } function printArray ( a ) { let n = a . length ; for ( let i = 0 ; i < n ; i ++ ) document . write ( a [ i ] + " " ) ; document . write ( " " ) ; } let a = [ 5 , 1 , 4 , 2 , 8 , 0 , 2 ] ; cocktailSort ( a ) ; document . write ( " " + " " ) ; printArray ( a ) ;