java 实现堆排序

来源:互联网 发布:medline数据库网址 编辑:程序博客网 时间:2024/05/20 23:35
package com;
/**
 * 实现堆排序
 * @author 小小王
 *
 */
public class TestHeapSort {
public static void adjustMinHeap(int[] a,int pos,int len){
int temp;
int child;
for(temp= a[pos];2 * pos+1<=len; pos =child){
child = 2 * pos+1;
if(child<len&&a[child]>a[child+1]){
child++;
}
if(a[child]<temp){
a[pos]=a[child];
}else{
break;
}
}
a[pos] = temp;
}
public static void myMinHeapSort(int[] a){
int i;
int len = a.length;
for(i=len/2-1;i>=0;i--){
adjustMinHeap(a, i, len-1);
}
for(i = len-1;i>=0;i--){
int temp = a[0];
a[0] = a[i];
a[i] = temp;
adjustMinHeap(a, 0, i-1);
}
}
public static void main(String[] args) {
int a[] = {4,6,2,4,8,5,2,9};
myMinHeapSort(a);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
原创粉丝点击