2015-08-28 48 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); 
} 

reverse(data, data+n);做什么?它是否反转了算法的代码或输出的程序?或者它有其他含义/定义?需要说明这个代码中'reverse(data,data + n)'的作用

我需要一些澄清。任何帮助将不胜感激。

+2

我假设'使用命名空间标准;'在该代码中的某个地方,如果是这样,请检查http://www.cplusplus.com/reference/algorithm/reverse/ –

+0

当处理大量这样的数据时,您应该将其分配到堆上,否则可能会遇到堆栈溢出。 – Lundin

回答

0

反转该范围中的元素的顺序(第一,最后一个)

双向迭代到该序列的初始和最终位置被颠倒。使用的范围是[first,last),它包含first和last之间的所有元素,包括first指向的元素,但不包含last指向的元素。