static int[] arr=new int[]{3,5,2,5,67,7,3,8}; public static void frontShow(int index){ if(arr==null||arr.length==0){ return; } System.out.println(arr[index]); //查询左节点2N+1 if(2*index+1<=arr.length-1){ frontShow(2*index+1); } //查询右节点 if(2*index+2<=arr.length-1){ frontShow(2*index+2); } } public static void maxHeap(int[]arr, int size,int index){ int leftIndex=2*index+1; int rightIndex=2*index+2; int max=index; if(leftIndex<size&&arr[max]<arr[leftIndex]){ max=leftIndex; } if(rightIndex<size&&arr[max]<arr[rightIndex]){ max=rightIndex; } if(max!=index){ arr[max]=arr[max]^arr[index]; arr[index]=arr[max]^arr[index]; arr[max]=arr[max]^arr[index]; maxHeap(arr,size,max); } } public static void heapSort(int ... arr){ int index=(arr.length-1)/2; for(int i=index;i>=0;i--){ maxHeap(arr,arr.length,i); } for(int i=arr.length-1;i>=0;i--){ if(arr[0]>arr[i]){ arr[0]=arr[i]^arr[0]; arr[i]=arr[0]^arr[i]; arr[0]=arr[i]^arr[0]; } maxHeap(arr,i,0); } } public static void main(String[] args) { frontShow(0); heapSort(arr); System.out.println(Arrays.toString(arr)); }
数据结构之顺序村村存储二叉树遍历及堆排序
猜你喜欢
转载自www.cnblogs.com/sunjinwei/p/12597280.html
今日推荐
周排行