#include<iostream>
using namespace std;
//利用附加数组重排数组元素
template<class T>
void Rearrange(T *&a, int n, int r[])
{//按序重排数组a中的元素,使用附加数组u
T *u = new T[n+1];
//在u中移动到正确的位置
for (int i=0; i<n; i++)
{
u[r[i]] = a[i];
delete []a;
}
//移回到a中
for (int i=0; i<n; i++)
{
a[i] = u[i];
delete []u;
}
};
//计算名次
template<class T>
void Rank(T a[], int n, int r[])
{// Rank the n elements a[0:n-1].
for (int i = 0; i < n; i++)
r[i] = 0; // initialize
// compare all element pairs
// Visual complains if we say int i again
for (int i = 1; i < n; i++)
{
for (int j = 0; j < i; j++)
{
if (a[j] <= a[i]) r[i]++;
else r[j]++;
}
}
};
//Swap函数
template<class T>
inline void Swap(T&a, T&b)
{
T temp = a;
a = b;
b = temp;
};
//主函数
void main()
{
int n = 5;
int *x = new int[5];
int y[5] = {5, 9, 2, 7, 0};
for (int i=0; i<n; i++)
x[i] = y[i];
int r[]={0, 0, 0, 0, 0};
Rank(x, n, r);
cout << "x中各元素的名次为" ;
for (int i=0; i<5; i++)
cout << r[i] << ' ';
Rearrange(x, n, r);
cout << "重排后的数组为";
for (int i=0; i<5; i++)
cout <<r[i] << ' ';
}
调试没错误 运行就出现了如题错误 高手帮忙给改一下 我起初为了使delete []a 的原因 但是去掉那一行错误依旧。希望大家帮忙看一下。