JAvaデータ構造とアルゴリズム------スタックソート

4491 ワード

 1 package iYou.neugle.sort;

 2 

 3 public class Heap_sort {

 4     public static void HeapSort(double[] array) {

 5         for (int i = (int) Math.floor(array.length / 2); i > 0; i--) {

 6             HeapBuild(array, i, array.length);

 7         }

 8 

 9         for (int i = array.length - 1; i > 0; i--) {

10             double temp = array[0];

11             array[0] = array[i];

12             array[i] = temp;

13 

14             HeapBuild(array, 0, i);

15         }

16     }

17 

18     public static void HeapBuild(double[] array, int parent, int length) {

19         double temp = array[parent];

20         int child = parent * 2 + 1;

21         while (child < length) {

22             if (child + 1 < length && array[child + 1] > array[child]) {

23                 child++;

24             }

25             if (temp >= array[child]) {

26                 break;

27             }

28 

29             array[parent] = array[child];

30 

31             parent = child;

32             child = parent * 2 + 1;

33         }

34         array[parent] = temp;

35     }

36 }