您的位置:首页 > 编程语言 > Java开发

堆排序

2016-08-15 08:36 218 查看
public class HeapSortCls{
public HeapSortCls(int[] lst) {
// TODO Auto-generated constructor stub
this.lst = lst;
this.len = lst.length;
}
public void createHeap(){
int startIndex = (lst.length -1)/2;
//int startIndex = lst.length-1;

for(int i=startIndex; i>=0; i--){
adjustHeap(i, lst.length-1);
}
}

private void adjustHeap(int k, int lastIndex){
while(2*k+1 <= lastIndex){
int i = 2*k+1;
if(2*k+2 <= lastIndex && lst[i] < lst[i+1])
i++;
if(2*k+1 <= lastIndex && lst[k] <lst[i])
exch(k, i);
k = i;
}
}

public void heapSort(){
for (int i = lst.length-1; i >= 0 ; i--) {
adjustHeap(0, i);
exch(0, i);
}
}

private void exch(int i, int j){
int tmp = lst[i];
lst[i] =  lst[j];
lst[j] = tmp;
}

}


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