/// <summary> /// ヒープから最大値を削除する。 /// </summary> /// <param name="array">対象の配列リスト</param> static void PopHeap(ArrayList <T> array) { int n = array.Count - 1; array[0] = array[n]; array.EraseLast(); for (int i = 0, j; (j = 2 * i + 1) < n;) { if ((j != n - 1) && (array[j].CompareTo(array[j + 1]) < 0)) { j++; } if (array[i].CompareTo(array[j]) < 0) { T tmp = array[j]; array[j] = array[i]; array[i] = tmp; } i = j; } }