秩排序是对阵列.自其时间复杂性为O(n²),不强烈建议使用,但非常直观而且很容易理解。要执行等级 分类,这里是通用的C类++:

模板<T类>
无效等级(T a&#91&#93,int n,int r&#91&#93&#93)
{

for(int i=0;i<n;i++)
r&#91i&#93=0//初始化秩数组
for(int i=1;i<n;i++)
对于(int j=0;j<i;j++)
如果(a&#91j&#93<=a&#91i&#93)r&#91i#93++;
否则r&#91j&#93++;
}

模板<T类>
无效重排(T a&#91&#93,int n,int r&#91&#93&#93)
{

T*u=新T&#91n+1
for(int i=0;i<n;i++)
u&#91r&#91i&#93&#93=a&#91i]
for(int i=0;i<n;i++)
a&#91i&#93=u&#91i]
删除&#91&#93u;
}

如你所见,第一个功能对传递的数组进行排序,并告诉第二个功能下哪一个订单物体到。为了使代码正常工作比较 操作员必须是过载对于各自T。

登录登记在这里写点什么或联系作者。