太狠了,让三分钟写完一个……手残的我废了 

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        int[] arr = new int[]{1,9,5,6,3,8,100,0,-1};
        System.out.println("初始顺序:"+Arrays.toString(arr));
        sort(arr);
        System.out.println("升序结果:"+Arrays.toString(arr));
    }
    public static void sort(int[] arr){
        for (int i = arr.length/2-1; i >=0 ; i--) {
                adjust(arr,i,arr.length);//进行第一次的筛选(调整)
        }
        for (int i = arr.length-1; i >0 ; i--) {
            swap(arr,0,i);//筛选过后每次挑出最大的,放到最后
            adjust(arr,0,i);//继续筛选
        }

    }
    public static void adjust(int[] arr,int i,int len){//调整
        int now = arr[i];
        for(int k=i*2+1;k<len;k=k*2+1){
            if(k+1<len&&arr[k]<arr[k+1])k++;//如果右孩子比左孩子大就交换
            if(arr[k]>now) {
                arr[i]  = arr[k];
                i = k;
            }else break;
        }
        arr[i] = now;
    }
    public static void swap(int[] arr,int a,int b){//普通的交换函数
        int temp  = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }

}