以下为代码实现
function heapsort( array ){ bulidHeap( array ); for( var i = array.length-1; i >= 0; --i ){ swap( array, 0, i ); adjust( array, 0, i ); } } function buildHeap( array ){ var i = Math.ceil(array.length / 2); for( ; i >= 0; --i) { adjust( array, i , array.length ) } } function swap( array, i, j ){ var tmp = array[ i ]; array[ i ] = array[ j ]; array[ j ] = tmp; } function adjust( array, i , j ){ var larger = i; var left = i * 2 + 1; var right = i * 2 + 2; if( left < j && array[ left ] > array[ larger ]){ larger = left; } if( right < j && array[ right ] > array[ larger ]){ larger = right; } if( larger != i ){ swap( array, larger, i ); adjust( array, larger , j ) } } var arr = [ 2, 3, 56, 12, 123, 5, 2, 5, 1, 5, 3, 26, 8, 2, 64, 23, 98 ]; heapsort( arr );