void sortR(link h, void(*visit)(Item)) { if (h!=z) { sortR(hl, visit); visit(*(h->item)); sortR(hr, visit); } }
void sortR (link currentLink, void (*visit)(Item)) { if (currentLink == emptyTree) { return; } sortR (currentLink->left, visit); visit (currentLink->item); sortR (currentLink->right, visit); }
static void sortR(link h, void (*visit)(Item)) { if(h == z) return; /* Chama a função 'visit' para o nó interno e, * após, fazemos o 'sortR' para as outras */ sortR(h->l, visit); visit(h->item); sortR(h->r, visit); }
void sortR(int v[], int l, int r){ if(r <= l) return; uniform_int_distribution<> distr(l, r-1); int temp = distr(eng); swap(v[temp], v[r]); //printf("%d %d %d\n", temp, l, r); int mid = partitionR(v, l, r); sortR(v, l, mid - 1); sortR(v, mid + 1, r); }
std::size_t Sample_state_filter::unique_samples () const /* Count number of unique (unequal value) samples in S * Implementation requires std::sort on sample column references */ { // Temporary container to Reference each element in S typedef std::vector<ColProxy> SRContainer; SRContainer sortR(S.size2()); std::size_t col_index = 0; for (SRContainer::iterator si = sortR.begin(); si != sortR.end(); ++si) { (*si).cm = &S; (*si).col = col_index++; } // Sort the column proxies std::sort (sortR.begin(), sortR.end(), ColProxy::less); // Count element changes, precond: sortS not empty std::size_t u = 1; SRContainer::const_iterator ssi = sortR.begin(); SRContainer::const_iterator ssp = ssi; ++ssi; while (ssi < sortR.end()) { if (ColProxy::less(*ssp, *ssi)) ++u; ssp = ssi; ++ssi; } return u; }
void STsort(void (*visit (Item))) { sortR(head, visit); }
static void sortR(link h, void (*visit)(Item)) { if (h == z) return; sortR(h->l, visit); visit(h->item); sortR(h->r, visit); }
void STsort(link head, void(*visit)(Item)) { sortR(head, visit); }
void QuickSortR(int v[], int N) { sortR(v, 0, N-1); }
void STsort(void (*visit)(const crv::Internal<Item>)) { sortR(head, visit); }
static void sortR(link h, void (*visit)(const crv::Internal<Item>)) { if (h == z) return; sortR(h->l, visit); visit(h->item); sortR(h->r, visit); }
void STsort (void (*visit)(Item)) { sortR (rootNodeLink, visit); }