大家来找错

来源:百度知道 编辑:UC知道 时间:2024/09/21 22:38:39
功能:元素在队列中的名次可定义为队列中所有比它小的元素数目加上在它左边的与它相同的元素数目。
例如:实现一个数字a=[4,3,9,3,7]作为队列,则各元素的名次依次为r=[2,0,4,1,3]
#include<iostream>
using namespace std;
template<class T>
void Rank(T a[],int n,int r[])
{
int j=0;
for(int k=0;k<n;k++)
{r[k]=0;// 初始赋值
while(j<n) //与每个元素比
if(a[k]>a[j])r[k]++;
for(int s=0;s<k;s++) //与左边的元素比
if(a[k]==a[s])r[k]++;
}
}
int main()
{
int a[3]={4,3,3},r[3];
Rank(a,3,r);
cout<<"The rand is:"<<endl;
for(int l=0;l<3;l++)
cout<<r[l]<<" ";
cout<<endl;
return 0;
}

//太不合格的代码了

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

for(int k=0;k<n;k++)
{
int j=0; //把这句放在里面!
r[k]=0;// 初始赋值
while(j<n) //与每个元素比,是<k
if(a[k]>a[j++])r[k]++; //j每次要加一嘛
for(int s=0;s<k;s++) //与左边的元素比
if(a[k]==a[s])r[k]++;
}
}