Esempio n. 1
0
void qrand(int seq[], int n) 
{
  int k, p;
  for ( k = 0; k < n; k++ ) { seq[k] = k; }
  for ( k = 1; k < n; k++ ) { 
    p = irand(k+1); arr_swap(seq, k, p); 
  }
}
Esempio n. 2
0
void bubble_up(heap *h, unsigned i)
{
        unsigned i_par=parent(i);
        while (h->buffer[i_par] > h->buffer[i]) {
                arr_swap(h->buffer, i, i_par);
                i=i_par;
                i_par=parent(i);
        }
}
Esempio n. 3
0
void bubble_down(heap *h, unsigned i)
{
        while (is_valid_ind(h, i)) {
                int smallest=smaller_child(h, i);
                if (smallest == -1 || smallest == ((int) i)) {
                        return;
                } else {
                        arr_swap(h->buffer, i, smallest);
                        i=smallest;
                }
        }

}
Esempio n. 4
0
int heap_pop(heap *h) {
        int retval=h->buffer[0];
        arr_swap(h->buffer, 0, --h->size);
        bubble_down(h, 0);
        return retval;
}