1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 按照分数进行名次计算 名次排序

按照分数进行名次计算 名次排序

时间:2024-03-23 15:33:48

相关推荐

按照分数进行名次计算 名次排序

一个元素在一个序列中的名次是所有比它小的元素个数加上在它左边出现的与它相同的元素个数

例如:数组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]++;elsera[j]++;}}}

利用名次计算后的结果ra[n],将成绩按照名次进行排序,函数如下:

//按照名次排序template <class T>void reOrder(T a[], int n, int ra[]){T *u = new T[n];//定义数组u,将元素排序//把a中的元素添加在u中for (int i = 0; i < n; i++){u[ra[i]] = u[i];}//吧u中的数据复制给afor (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]);}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。