2015-08-28 3 views
-3
void bckuetsrot(int data[], int n) 
{ 
    int x = 65537; 
    int bckuet[x]; 
    for (int i = 0; i < x; i++) 
    { 
     buckets[i] = 0; 
    } 

    for (int i = 0; i < n; i++) 
    { 
     bckuet[data[i]]++; 
     q++; 
    } 
    for (int i = 0, j = 0; j < x; j++) 
    { 
     for (int k = bckuet[j]; k > 0; k--) 
     { 
       data[i++] = j; 
       q++; 
     } 
    } 

    reverse(data, data + n); 
} 

Que fait reverse(data, data+n);? Est-ce qu'il inverse l'algorithme du code ou le sortie du programme? Ou il a d'autres sens/définition?Besoin de clarifier ce que fait 'reverse (data, data + n)' dans ce code

J'ai besoin de clarification. Toute aide serait appréciée.

+2

Je suppose que 'using namespace std;' est quelque part dans ce code, si c'est le cas, vérifiez http://www.cplusplus.com/reference/algorithm/reverse/ –

+0

Lorsque vous traitez de grandes quantités de données comme celle-ci, vous devriez allouer sur le tas, ou vous pourriez courir dans les débordements de la pile. – Lundin

Répondre

0

inverse l'ordre des éléments dans la gamme (first, last)

itérateurs bidirectionnels aux positions initiale et finale de la séquence à être inversés. La plage utilisée est [premier, dernier], qui contient tous les éléments entre le premier et le dernier, y compris l'élément pointé par le premier mais pas l'élément pointé par le dernier.