堆排序 JAVA
来源:互联网 发布:windows手动更新补丁 编辑:程序博客网 时间:2024/06/16 08:19
class Heap{
private java.util.ArrayListlist=new java.util.ArrayList();
public Heap(){}
public Heap(E[] objects){
for(int i=0;i
add(objects[i]);
}
public void add(E newObject){
list.add(newObject);
int currentIndex=list.size()-1;
while(currentIndex>0){
int parentIndex=(currentIndex-1)/2;
if(list.get(currentIndex).compareTo(list.get(parentIndex))>0){
E temp=list.get(currentIndex);
list.set(currentIndex,list.get(parentIndex));
list.set(parentIndex,temp);
}
else
break;
currentIndex=parentIndex;
}
}
public E remove(){
if(list.size()==0)return null;
E removeObject=list.get(0);
list.set(0,list.get(list.size()-1));
list.remove(list.size()-1);
int currentIndex=0;
while(currentIndex
int leftChildIndex=2*currentIndex+1;
int rightChildIndex=2*currentIndex+2;
if(leftChildIndex>=list.size())break;
int maxIndex=leftChildIndex;
if(rightChildIndex
if(list.get(maxIndex).compareTo(list.get(rightChildIndex))<0){
maxIndex=rightChildIndex;
}
}
if(list.get(currentIndex).compareTo(list.get(maxIndex))<0){
E temp=list.get(maxIndex);
list.set(maxIndex,list.get(currentIndex));
list.set(currentIndex,temp);
currentIndex=maxIndex;
}
else
break;
}
return removeObject;
}
public int getSize(){
return list.size();
}
}
public class HeapSort{
public static void hespSort(E[] list){
Heapheap=new Heap();
for(int i=0;i
heap.add(list[i]);
for(int i=list.length-1;i>=0;i--)
list[i]=heap.remove();
}
public static void main(String[] args){
Integer[] list={2,3,2,5,6,1,-2,3,14,12};
hespSort(list);
for(int i=0;i
System.out.print(list[i]+" ");
System.out.println();
}
}
- java排序 -- 堆排序
- Java堆排序算法
- 堆排序(java)
- Java 堆排序算法
- JAVA 堆排序
- 堆排序Java代码
- java 堆排序
- 堆排序Java实现
- java堆排序
- 堆排序(JAVA)
- 堆排序-java实现
- JAVA堆排序
- java 堆排序
- 堆排序 Java实现
- 堆排序 java
- java 堆排序
- Java堆排序
- java堆排序
- Github for windows使用1
- Maven详解之仓库------本地仓库、远程仓库
- sql查询重复记录、删除重复记录方法大全
- ios应用开发相关证书的申请和配置
- 常量指针和指针常量
- 堆排序 JAVA
- 基于Oracle开发ASP.NET程序中的一些问题
- java4android__41集到43集类集框架
- 最大公约数
- View和Window的架构
- struts2工作原理
- hdu 4288 Coder(线段树)
- js 自运行
- Evaluate Reverse Polish Notation