您的位置:首页 > 其它

排序:堆排序

2008-04-26 18:49 162 查看

<!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 = [82, 16, 9, 95, 27, 75, 42, 69, 34];


res = [];


heap_sort(arr, res);


alert(res);


</script>


</body>


</html>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: