public class StackSortTest {
public static void main(String[] args) {
int arr[]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
for (int i=0;i<arr.length;i++){
heapInsert(arr,i);
}
for(int i=0;i<arr.length;i++){
swap(arr,0,arr.length-1-i);
heapfi(arr,0,arr.length-1-i);
}
for (int i : arr) {
System.out.print(i+" ");
}
}
public static void heapInsert(int arr[],int index){
while (arr[index]>arr[(index-1)/2]){
swap(arr,index,(index-1)/2);
index=(index-1)/2;
}
}
public static void heapfi(int []arr,int index,int heapSize){
int left=(index2)+1;//左边的树
while(left<heapSize){
int largest=left+1<heapSize&&arr[left+1]>arr[left]?left+1:left;
largest=arr[largest]>arr[index]?largest:index;
if(largest==index)
break;
swap(arr,largest,index);
index=largest;
left=index2+1;
heapSize–;
}
}
private static void swap(int[] arr, int index, int i) {
int temp=arr[index];
arr[index]=arr[i];
arr[i]=temp;
}
}
java堆排序
最新推荐文章于 2024-07-03 19:13:37 发布