您的位置:首页 > 其它

堆排序

2015-12-17 01:20 218 查看
import java.util.Arrays;

public class Heapsort {

public static void main(String[] args) {
int a[] = {1,3,4,6,4,234,5436,765,74,543,423,432,432,543,654,7658,867,64,5323,4,234,543654};
int b[] = Arrays.copyOf(a, a.length+1);
b[b.length-1] = b[0];
int N = b.length -1;
for (int i = N/2; i > 0; i--) {
sink(b, i,N);
}
for (int i = N; i> 1;) {
System.out.print(b[1] +" ");
exchange(b, 1, i--);
sink(b, 1,i);
}

}

public static void sink(int a[],int k,int N) {
while (2 * k <= N) {
int j = 2 * k;
if (j < N  && a[j] > a[j+1]) {
j++;
}
//          System.out.println("j:" + k + " j " + j);
if (a[k] < a[j]) {
break;
}
exchange(a, k, j);
k = j;
}
}

public static void exchange (int a[],int i ,int j) {
int temp = 0;
temp = a[i];
a[i] = a[j];
a[j] = temp;

}

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