堆排序的java实现
package Test; class HeapSorts{ public int[] heapSort(int[] array){ array = buildMaxHeap(array); for(int i=array.length-1;i>0;i--){ int temp = array[0]; array[0] = array[i]; array[i] = temp; adjustDownToUp(array, 0,i); } return array; } //建立大堆 private int[] buildMaxHeap(int[] array){ for(int i=(array.length-2)/2;i>=0;i--){ adjustDownToUp(array, i,array.length); } return array; } //从下向上进行向上调整 private void adjustDownToUp(int[] array,int k,int length){ int temp = array[k]; for(int i=2*k+1; i<length-1; i=2*i+1){ if(i<length && array[i]<array[i+1]){ i++; } if(temp>=array[i]){ break; }else{ array[k] = array[i]; k = i; } } array[k] = temp; } //对toString方法进行覆写 public void toString(int[] array){ for(int i=0;i<array.length;i++){ System.out.print(array[i]+" "); } } } public class HeapSort { public static void main(String[] args) { //测试堆排序 HeapSorts heapSorts = new HeapSorts(); int[] arr = {17,78,56,43,21,9}; heapSorts.toString(heapSorts.heapSort(arr)); } }
运行结果: