排序:堆排序
来源:互联网 发布:富士钓具淘宝旗舰店 编辑:程序博客网 时间: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 = [82, 16, 9, 95, 27, 75, 42, 69, 34];
res = [];
heap_sort(arr, res);
alert(res);
</script>
</body>
</html>
<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>