按照分数进行名次计算、名次排序
2017-03-17 20:38
429 查看
一个元素在一个序列中的名次是所有比它小的元素个数加上在它左边出现的与它相同的元素个数
例如:数组a=[4,2,9,2,6]是一个序列,各元素的名次为ra=[2,0,4,1,3]。
//名次计算
template<class T>
void rank(T a[], int n, int ra[])
{
//给数组a的n个元素排名次结果在ra中返回
for (int 1 = 0; i < n; i++)
{
ra[i] = 0;//初始化
}
//比较所有元素
for (int i = 1; i < n; i++)
{
for (int j = 0; j < i; j++)
{
if (a[j] <= a[i])
ra[i]++;
else
ra[j]++;
}
}
}
利用名次计算后的结果ra
,将成绩按照名次进行排序,函数如下:
//按照名次排序
template <class T>
void reOrder(T a[], int n, int ra[])
{
T *u = new T
;//定义数组u,将元素排序
//把a中的元素添加在u中
for (int i = 0; i < n; i++)
{
u[ra[i]] = u[i];
}
//吧u中的数据复制给a
for (int i = 0; i < n; i++)
{
a[i] = u[i];
}
}
在这回顾一下选择排序和冒泡排序的方法,程序分别如下:
//选择排序
template <class T>
viod selectSort(T a[], int n)
{
for (int k = 0; k < n; k++)
{
int recordMaxIndex = 0;
for (int i = 0; i < n-k; i++)
{
if (a[i]>a[recordMaxIndex])
recordMaxIndex = i;
}
swap(a[n-k-1], a[recordMaxIndex]);
}
}
//冒泡排序
template<class T>
void bubbleSrot(T a[], int n)
{
for (int i = n; i > 1; i--)
{
for (int k = 0; k < i - 1; k++)
{
if (a[k]>a[k + 1])
swap(a[k], a[k + 1]);
}
}
}
例如:数组a=[4,2,9,2,6]是一个序列,各元素的名次为ra=[2,0,4,1,3]。
//名次计算
template<class T>
void rank(T a[], int n, int ra[])
{
//给数组a的n个元素排名次结果在ra中返回
for (int 1 = 0; i < n; i++)
{
ra[i] = 0;//初始化
}
//比较所有元素
for (int i = 1; i < n; i++)
{
for (int j = 0; j < i; j++)
{
if (a[j] <= a[i])
ra[i]++;
else
ra[j]++;
}
}
}
利用名次计算后的结果ra
,将成绩按照名次进行排序,函数如下:
//按照名次排序
template <class T>
void reOrder(T a[], int n, int ra[])
{
T *u = new T
;//定义数组u,将元素排序
//把a中的元素添加在u中
for (int i = 0; i < n; i++)
{
u[ra[i]] = u[i];
}
//吧u中的数据复制给a
for (int i = 0; i < n; i++)
{
a[i] = u[i];
}
}
在这回顾一下选择排序和冒泡排序的方法,程序分别如下:
//选择排序
template <class T>
viod selectSort(T a[], int n)
{
for (int k = 0; k < n; k++)
{
int recordMaxIndex = 0;
for (int i = 0; i < n-k; i++)
{
if (a[i]>a[recordMaxIndex])
recordMaxIndex = i;
}
swap(a[n-k-1], a[recordMaxIndex]);
}
}
//冒泡排序
template<class T>
void bubbleSrot(T a[], int n)
{
for (int i = n; i > 1; i--)
{
for (int k = 0; k < i - 1; k++)
{
if (a[k]>a[k + 1])
swap(a[k], a[k + 1]);
}
}
}
相关文章推荐
- 计算名次与按名次排序问题的算法优化
- 一个计算数值并进行排序的SQL语句
- 用C语言编写一个双链表,每个结点存储学生的编号以及姓名,遍历这个双链表,并将学号按照从小到大进行排序
- 按照NSArray里边的Object的某个属性进行排序
- C++中实现对map按照value值进行排序
- 对某目录下的文件按照日期进行排序
- PHP 多维数组按照指定的顺序进行排序
- Perl 把一堆文件 按照 文件名字中的时间 进行排序
- 我自己编写的实现的对一些列数字的索引进行排序的类 (注意:不是对数字集合进行排序,而是对数字集合的索引按照数字值进行排序)
- //编写程序使学生的档案记录按照学号从小到大进行排序
- 实现从一个ListBox向另一个ListBox中移动选中项,并按照value进行排序
- 客户端CheckBox按照选择的顺序进行排序
- oracle分页查询并按照某字段进行排序的数种解决方案
- SqlServer按照指定顺序对字段进行排序
- hibernate xml配置文件 多对一中 怎么按照某个字段进行排序
- 实现数据按照自己的需要进行排序
- 使用LinkedHashMap进行分数排序
- sql 按照任意顺序进行排序
- 按照字符串的长短进行排序
- 转:C++中实现对map按照value值进行排序