indexx.cpp
来自「C++常用算法集合」· C++ 代码 · 共 60 行
CPP
60 行
void indexx(int n, double arrin[], int indx[])
{
int i,j,l,ir,indxt;
double q;
for (j = 1; j<=n; j++)
{
indx[j] = j;
}
if (n == 1)
{
return;
}
l = int(n / 2 + 1);
ir = n;
do
{
if (l > 1)
{
l = l - 1;
indxt = indx[l];
q = arrin[indxt];
}
else
{
indxt = indx[ir];
q = arrin[indxt];
indx[ir] = indx[1];
ir = ir - 1;
if (ir == 1)
{
indx[1] = indxt;
return;
}
}
i = l;
j = l + l;
while (j <= ir)
{
if (j < ir)
{
if (arrin[indx[j]] < arrin[indx[j + 1]])
{
j = j + 1;
}
}
if (q < arrin[indx[j]])
{
indx[i] = indx[j];
i = j;
j = j + j;
}
else
{
j = ir + 1;
}
}
indx[i] = indxt;
}while(1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?