Guest User

Untitled

a guest
Jan 20th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. public class Heap {
  2.  
  3. public static void sort(int[] a) {
  4. int N = a.length;
  5. // 构建heap
  6. for (int i = N / 2 - 1; i >= 0; i--) {
  7. sink(a, i, N - 1);
  8. }
  9. // 排序
  10. while (N > 1) {
  11. exch(a, 0, N - 1);
  12. N--;
  13. sink(a, 0, N - 1);
  14. }
  15. }
  16.  
  17. private static void sink(int[] pq, int k, int n) {
  18. while (2 * k + 1 <= n) {
  19. int j = 2 * k + 1;
  20. if (j + 1 <= n && less(pq, j, j + 1)) {
  21. j++;
  22. }
  23. if (!less(pq, k, j)) {
  24. break;
  25. } else {
  26. exch(pq, k, j);
  27. k = j;
  28. }
  29. }
  30. }
  31.  
  32. public static void show(int[] a) {
  33. for (int i = 0; i < a.length; i++) {
  34. System.out.println(a[i]);
  35. }
  36. }
  37.  
  38. private static boolean less(int[] pq, int i, int j) {
  39. return pq[i] < pq[j];
  40. }
  41.  
  42. private static void exch(int[] pq, int i, int j) {
  43. int temp = pq[i];
  44. pq[i] = pq[j];
  45. pq[j] = temp;
  46. }
  47. }
Add Comment
Please, Sign In to add comment