排序:堆排序

来源:互联网 发布:富士钓具淘宝旗舰店 编辑:程序博客网 时间:2024/06/08 08:35
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    
<head>
        
<meta http-equiv="Content-Type" content="text/html; charset=gbk"/>
        
<title>Untitled Document</title>
    
</head>
    
<body>
        
<script type="text/javascript">
            
function fheap(arr, parent){
                
var len = arr.length, temp;
                
var son = parent * 2;
                
if (son + 1 <= len) {
                    son 
= arr[son - 1> arr[son] ? son : son + 1;
                }

                
while (son <= len && arr[son - 1> arr[parent - 1]) {                
                    temp 
= arr[son - 1];
                    arr[son 
- 1= arr[parent - 1];
                    arr[parent 
- 1= temp;
                    parent
=son;
                    son 
= 2 * parent;
                    
if (son + 1 <= len) {
                        son 
= arr[son - 1> arr[son] ? son : son + 1;
                    }

                }

                
                
return arr;
            }

            
            
/**
             * 堆排序法
             * @param {Object} arr
             
*/

            
function heap_sort(arr, res){
                
var n = arr.length, temp;
                
var mid = Math.floor(n / 2);
                
for (var i = mid; i >= 1; i--{
                    arr 
= fheap(arr, i);
                }

                
//alert(arr);
                for (var j = n; j > 0; j--{
                    temp 
= arr[j - 1];
                    arr[j 
- 1= arr[0];
                    arr[
0= temp;
                    res[res.length] 
= arr[j - 1];
                    arr.length 
= arr.length - 1;
                    arr 
= fheap(arr, 1);
                }

            }

            
            
var arr = [82169952775426934];
            res 
= [];
            heap_sort(arr, res);
            alert(res);
        
</script>
    
</body>
</html>
原创粉丝点击