The rank sort is another method of sorting an array. Since its time complexity is O(n²), it is not highly recommended for use, but is very intuitive and easy to understand. To perform a rank sort, here is generic C++:

template <class T>
void Rank(T a[], int n, int r[])
{

for (int i=0;i<n;i++)
r[i]=0; //initialize rank array
for(int i=1;i<n;i++)
for(int j=0;j<i;j++)
if(a[j]<=a[i]) r[i]++;
else r[j]++;
}

template <class T>
void Rearrange(T a[],int n,int r[])
{

T *u=new T[n+1]
for (int i=0;i<n;i++)
u[r[i]]=a[i]
for(int i =0;i<n;i++)
a[i]=u[i]
delete []u;
}

As you can see, the first function ranks the passed array and tells the second function which order to place the objects into. In order for the code to work properly, the comparison operators must be overloaded for the respective class T.