堆排序

来源:互联网 发布:apache文件服务器搭建 编辑:程序博客网 时间:2024/04/30 13:09
class HeapSort {//堆排序public static void heapSort(int[] arr){buildMaxHeap(arr);int heapSize=arr.length-1;for (int i=heapSize;i>0 ;i-- ){swap(arr,0,i);heapSize--;maxHeapfy(arr,0,heapSize);}}//建堆public static void buildMaxHeap(int[] arr){for (int i=arr.length/2;i>=0 ;i-- ){maxHeapfy(arr,i,arr.length-1);}}//调整public static void maxHeapfy(int[] arr,int i,int heapSize){int left=2*i;int right=2*i+1;int largest=0;if (left<=heapSize&&arr[left]>arr[i]){largest=left;}elselargest=i;if (right<=heapSize&&arr[right]>arr[largest]){largest=right;}if (largest!=i){swap(arr,largest,i);maxHeapfy(arr,largest,heapSize);}}public static void swap(int[] arr,int a,int b){int temp=arr[a];arr[a]=arr[b];arr[b]=temp;}public static void main(String[] args) {int[] arr={7,8,5,4,3,2};heapSort(arr);for (int i=0;i<arr.length ;i++ ){System.out.println(arr[i]);}}}

0 0
原创粉丝点击