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 }