开源查询推荐系统源代码阅读笔记
http://d.download.csdn.net/down/1056257/WUTAOWUTAO
// 根据index更新token_info(int token_id, int value),图中可能token_max会变化,size不变或者加8,
// 保证TokenInfo再增加2*sizeof(int),足够新增一个token信息
int update_token_info(int* token_info, int size, int index, int* token_max)
{
int times = 0;
int* end_token = token_info + size/sizeof(int);
// TODO: bsearch
for (; token_info < end_token; token_info += 2)
{
if (index > *token_info)// index在后面
{
continue;
}
else if (index == *token_info)// index就是此项
{
times = *(token_info+1) + 1;
*(token_info+1) = times;
if (times > *token_max)
{
*token_max = times;
}
return size;
}
else if ( index < *token_info )// 插入index
{
memmove((void*)(token_info+2), (void*)(token_info), 4*(end_token-token_info));
*token_info = index;
*(token_info+1) = 1;
return size + 8;
}
cout << *token_info << endl;
}
// 增加到最后
*token_info = index;
*(token_info+1) = 1;
return size + 8;
}