(七)JavaScript实现堆排序
来源:互联网 发布:软件架构设计 autosar 编辑:程序博客网 时间:2024/06/04 23:32
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title></title>
</head>
<body>
<script>
function Heap(data){
this.arr=data;
this.count=0;
this.size=function(){
return this.count;
};
this.isEmpty=function(){
return this.count==0;
}
this.insert=function(item){
this.arr[this.count]=item;
this.shiftUp(this.count);
this.count++;
}
this.extractMax=function(){
var temp=this.arr[0];
this.arr[0]=this.arr[count];
this.count--;
this.shiftDown(0);
return temp;
}
this.shiftDown=function(index){
while(index*2+1<=this.count){
var j=index*2+1;
if(j+1<=this.count&&this.arr[j+1]>this.arr[j]){
j++;
}
if(this.arr[j]<this.arr[index]){
break;
}
var temp=this.arr[j];
this.arr[j]=this.arr[index];
this.arr[index]=temp;
index=j;
}
/*if(index>count||index*2>count||(index*2+1)>count){
return;
}
var left=index*2;
var right=index*2+1;
if(arr[left]>arr[right]){
if(arr[left]>arr[index]){
var temp=arr[left];
arr[left]=arr[index];
arr[index]=temp;
shiftDown[left];
}
}else{
if(arr[right]>arr[index]){
var temp=arr[right];
arr[right]=arr[index];
arr[index]=temp;
shiftDown[right];
}
}*/
}
this.shiftUp=function(index){
var parent=Number.parseInt((index-1)/2);
if(parent<0){
return;
}
if(this.arr[index]>this.arr[parent]){
var temp=this.arr[parent];
this.arr[parent]=this.arr[index];
this.arr[index]=temp;
this.shiftUp(parent);
}
}
this.heapify=function(){
this.count=this.arr.length-1;
var n=Number.parseInt((this.count-1)/2);
for(var j=n;j>=0;j--){
this.shiftDown(j);
}
}
//原地堆排序
this.heapsort=function(){
for(var i=this.arr.length-1;i>0;i--){
var temp=this.arr[0];
this.arr[0]=this.arr[i];
this.arr[i]=temp;
this.count--;
this.shiftDown(0);
}
}
this.show=function(){
alert(this.arr);
}
}
var arrEX=[4,1,10,9,3,6,19,12,11,14,48,99,56,45];
var heap=new Heap(arrEX);
heap.heapify();
heap.heapsort();
heap.show();
/*for(var i=0;i<arrEX.length; i++){
heap.insert(arrEX[i]);
}
heap.show();*/
</script>
</body>
</html>
阅读全文
0 0
- (七)JavaScript实现堆排序
- 堆排序(七)
- 堆排序javascript实现
- 排序算法(七):JAVA实现堆排序
- 堆排序之JavaScript实现
- 排序算法(七) 堆排序
- 数据结构之二叉堆(构建堆,堆排序)-(七)
- 七、堆排序
- java实现七种排序 (插入排序, 希尔排序, 插入排序, 快速排序, 简单选择排序, 堆排序, 归并排序)
- 排序七之堆排序
- 排序算法(七)-堆排序
- 排序算法(七)——堆排序
- 排序算法(七)——堆排序
- 排序算法(七)——堆排序
- 堆排序(java实现)
- 堆排序(C++实现)
- 堆排序(java实现)
- 堆排序(java实现)
- 简单的图片轮播器(二):以前最常见的图片轮播
- 利用bootstrap实现简单页面设计
- 小仙女—过滤器(filter)、监听器(listener)
- [Loj] #6000. 「网络流 24 题」搭配飞行员
- Java精选笔记_IO流(字节流、InputStream、OutputStream、字节文件、缓冲区输入输出流)
- (七)JavaScript实现堆排序
- ubuntu_内网dns服务器搭建
- 魅族系统安装包有冲突,请尝试重新安装Installation failed with message INSTALL_FAILED_USER_RESTRICTED.
- 实习记录(序)
- Mac python testlink模块安装
- 对象的内存布局及访问原理
- formatmessage
- [Loj]#6001. 「网络流 24 题」太空飞行计划
- github建立项目