示例#1
0
  void heapifydown(int index) {
    // System.out.println("m here inside delete" + index+ "heapsize" + heapsize);
    int min, l, r;
    state tempstate;
    // System.out.println("m here inside delete" + index+ "heapsize" + heapsize);

    l = child(index, 1);
    r = child(index, 2);
    min = index;
    if (l < heapsize && (heap[l].f < heap[min].f)) min = l;
    if (r < heapsize && (heap[r].f < heap[min].f)) min = r;
    if (r < heapsize && heap[r].f == heap[min].f) // added loop zhilmil tie
    {
      if (heap[r].g < heap[min].g) min = r;
    }
    if (l < heapsize && heap[l].f == heap[min].f) // added loop zhilmil tie
    {
      if (heap[l].g < heap[min].g) min = l;
    }
    if (min != index) {
      tempstate = heap[index];
      heap[index] = heap[min];
      heap[min] = tempstate;
      heapifydown(min);
    }
  }
示例#2
0
 void delete(int index) {
   heap[index] = heap[heapsize - 1];
   // System.out.println("m here inside delete" + index+ "heapsize" + heapsize);
   heapsize--;
   // System.out.println("m here inside delete" + index+ "heapsize" + heapsize);
   heapifydown(index);
 }