堆排序
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; } }