📄 ranklist.h
字号:
/* lista di tutti i documenti indicizzati e relativo valore di rank */
RANKS* InitRankList(int elements)
{
RANKS* rankList = malloc( sizeof(RANKS) * elements+1 );
memset(rankList, 0, sizeof(RANKS) * elements+1);
return rankList;
}
/* algoritmo di ordinamento (molto efficente) */
/* ordinamento della lista rank */
/* sort = 0 -> ordina per page
sort = 1 -> ordina per rank
order = 0 -> ordinamento crescente 1,2,3
order = 1 -> ordinamento decrescente 3,2,1
*/
void insertion_sortRanks(RANKS* rankList, int n, int sort, int order)
{
int i, j;
unsigned int app;
for (i=1; i<n; i++)
{
app = ((sort==0) ? rankList[i].page: rankList[i].rank) ;
j = i-1;
if(order==0)
{
while ((j>=0) && ( ((sort==0) ? rankList[j].page : rankList[j].rank) > app) )
{
swapRankList(rankList[j+1],rankList[j]);
j--;
}
}
else
{
while ((j>=0) && ( ((sort==0) ? rankList[j].page : rankList[j].rank) < app) )
{
swapRankList(rankList[j+1],rankList[j]);
j--;
}
}
if(sort==0)
rankList[j+1].page = app;
else
rankList[j+1].rank = app;
}
}
int InsertDocRank(RANKS* rankList, unsigned int doc, unsigned int rank,int elements)
{
int i;
for(i=0;i<elements; i++)
if(rankList[i].page == 0)
{
rankList[i].page = doc;
rankList[i].rank = rank;
return 1;
}
return 0;
}
/* binary search */
int ranksLookForPage(RANKS* rankList, unsigned int page, int elements)
{
unsigned int m;
int p, u;
p = 0;
u = elements-1;
while(p<u)
{
m = (p+u)/2;
if(rankList[m].page<page)
p = m+1;
else
u = m;
}
if(u>=0 && rankList[u].page == page)
return u;
else
return -1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -