Vue - 元件的自定義事件
阿新 • • 發佈:2021-10-12
public class HeapSort { public static void main(String[] args) { int[] array = {3,4,7,1,2}; heapSort(array); for (int i : array) { System.out.println(i); } } public static void heapSort(int[] array){ if (array == null || array.length < 2){ return; } int heapSize = array.length; for (int i = 0; i < array.length; i++) { headInsert(array, i); } swap(array, 0, --heapSize); while (heapSize > 0){ heapify(array, 0, heapSize); swap(array, 0, --heapSize); } } //每插入一個值比父節點大就交換,直到不比父節點大時 public static void headInsert(int[] array, int index){ while (array[index] > array[(index - 1) / 2]){ swap(array, index, (index - 1) / 2); index = (index - 1) / 2; } } //調整堆結構 public static void heapify(int[] array, int index, int heapSize){ int left = index * 2 + 1; while (left < heapSize){ int largest = left + 1 < heapSize && array[left] < array[left + 1] ? left + 1 : left; largest = array[largest] > array[index] ? largest : index; if (largest == index){ break; } swap(array, index, largest); index = largest; left = index * 2 + 1; } } public static void swap(int[] array, int a, int b){ if (a == b){ return; } array[a] = array[a] ^ array[b]; array[b] = array[a] ^ array[b]; array[a] = array[a] ^ array[b]; } }