Untitled
unknown
plain_text
4 years ago
981 B
5
Indexable
public class HeapEx { public int[] pQueue; public static int rear = 1; public static final int MAX_VALUE = 1000000000; public void swap(int x, int y) { int tmp = pQueue[x]; pQueue[x] = pQueue[y]; pQueue[y] = tmp; } void push(int Queue[], int value) { Queue[rear++] = value; int i = rear - 1; while (i > 1 && Queue[i] > Queue[i >> 1]) { swap(i, i >> 1); i = i >> 1; } } public int pop(int Queue[]) { if (rear < 1) { return 0; } int value = Queue[1]; Queue[1] = Queue[--rear]; Queue[rear] = 0; int i = 1; int max = MAX_VALUE; while (i << 1 < rear && (Queue[i] < Queue[i << 1] || Queue[i] < Queue[(i << 1) + 1])) { max = Queue[i << 1] > Queue[(i << 1) + 1] ? Queue[i << 1] : Queue[(i << 1) + 1]; if (max == Queue[i << 1]) { swap(i, i << 1); i = i << 1; } else if (max == Queue[(i << 1) + 1]) { swap(i, ((i << 1) + 1)); i = (i << 1) + 1; } } return value; } }
Editor is loading...