void rank(T a[], int n, int r[])
{
for (int i = 0; i < n; i++){
r[i] = 0;
for (int i = 1; i < n; i++)
for (int j = 0; j < i; j++)
if (a[j] <= a[i]) r[i]++;
else r[j]++;
}
int main()
{
int a[5] = {4, 3, 9, 3, 7};;
int r[5];
cout << "a[0:4] = ";
copy(a, a+5, ostream_iterator<int>(cout, " "));
cout << endl;
rank(a,5,r);
cout << "r[0:4] = ";
copy(r, r+5, ostream_iterator<int>(cout, " "));
cout << endl;
return 0;
}
運行結果:a[0:4] = 4 3 9 3 7
r[0:4] = 10 0 12 2 3
按書上説的,運行結果這麽是對的:a[0:4] = 4 3 9 3 7
r[0:4] = 2 0 4 1 3
請教到底是算法哪裏不對?