编辑代码

import java.util.Arrays;

class Main {

    static class Heap {

        int[] arrays;

        public Heap(int[] arrays) {
            this.arrays = arrays;
        }

        //0不存数据
        public void arrange(int[] arrays, int length) {
            int mid = (length - 1) / 2;

            if (mid == 0)
                return;

            int loop = 0;
            int i = mid;
            while (loop != 2) {
                int l = arrays[i * 2];
                int r = i * 2 + 1 < length - 1 ? arrays[i * 2 + 1] : -1;

                int index = r > l ? 1 : 0;  //0选左、1选右

                if (arrays[i] < arrays[i * 2 + index]) {
                    int m = arrays[i];
                    arrays[i] = arrays[i * 2 + index];
                    arrays[i * 2 + index] = m;
                }

                if (loop == 0)
                    i--;
                else if (loop == 1)
                    i++;

                if (i == 0 || i == mid + 1) {
                    loop++;
                    i = 1;
                }
            }
        }

        public void sort(Heap heap) {
            int[] arrays = heap.arrays;
            for (int i = arrays.length - 1; i > 0; i--) {
                int mid = arrays[i];
                arrays[i] = arrays[1];
                arrays[1] = mid;
                heap.arrange(arrays, i);
            }
        }

        @Override
        public String toString() {
            return Arrays.toString(arrays);
        }
    }

    public static void main(String[] args) {
        int[] arrs = {0, 2, 9, 7, 6, 5, 8};
        Heap heap = new Heap(arrs);
        heap.arrange(heap.arrays, heap.arrays.length);
        heap.sort(heap);
        System.out.println(heap);
    }
}