template <class T>
void GetXH(T v[], int n, T order[])
{
for(int x=0; x<n; x++)
{
order[x] = 0;
}
for(int x=0; x<n; x++)
{
for(int y=x+1; y<n; y++)
{
if(v[x] > v[y])
order[x]++;
else
order[y]++;
}
}
}
template <class T>
void GetXH2(T v[], int n, T order[])
{
for(int x=0; x<n; x++)
{
order[x] = 0;
}
for(int x=0; x<n; x++)
{
for(int y=0; y<x; y++)
{
if(v[x] > v[y])
order[x]++;
else
order[y]++;
}
}
}
template<class T>
int ShunXuSouSuo(T v[], int n, T a)
{
int x = 0;
for(; x<n && v[x] != a; x++);
return x==n ? -1 : x;
}
int _tmain(int argc, _TCHAR* argv[])
{
int v[] = { 4, 5, 9, 2 , 52, 2, 37, 8, 1};
int order[100];
GetXH2(v, _countof(v), order);
_tprintf(TEXT("/nvalues;/n"));
for(int x=0; x< _countof(v); x++)
{
_tprintf(TEXT("%02d "), v[x]);
}
_tprintf(TEXT("/norders;/n"));
for(int x=0; x< _countof(v); x++)
{
_tprintf(TEXT("%02d "), order[x]);
}
_tprintf(TEXT("/n"));
int nA = 37;
int x = ShunXuSouSuo(v, _countof(v), nA);
_tprintf(TEXT("%d'sIndex is %d/n"), nA, x);
return 0;
}