首页 > 编程语言 > 详细

堆排序

时间:2014-12-27 21:39:47      阅读:343      评论:0      收藏:0      [点我收藏+]

以下为代码实现

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 );

 

堆排序

原文:http://www.cnblogs.com/clearfix/p/4189189.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!