堆排序
思路:
1.创建函数可以把数组弄成大顶堆
2 将数组传入
3 将数组第一个数(最大的数与最后一个交换)
4 再次传入数组这次不将最后一个计入范围
依次
关键代码
//把arr[0]-arr[size]构建成大顶堆
public static void creatHeap(int[] arr,int i,int size){
int left;
int right;
int max;
for(;i>=0;i--){
left = i*2+1;
right = i*2+2;
max = i;
if(left<=size){
if(arr[max]<arr[left]){
max = left;
}
}
if(right<=size){
if(arr[max]<arr[right]){
max = right;
}
}
if(max != i){
int temp = arr[i];
arr[i] = arr[max];
arr[max] = temp;
}
}
}
public static void main(String[] args) {
int[] arr = {9,8,7,6,5,4,3,2,1};
int length = arr.length-1;
int i;
int tmp;
for(;length>=2;length--){
i= (length-1)/2;
creatHeap(arr, i,length);
tmp =arr[length];
arr[length] = arr[0];
arr[0] = tmp;
}
System.out.println(Arrays.toString(arr));
}
}