zoukankan      html  css  js  c++  java
  • 按名次排序

    给定一个数组a[], 得出一个数组中对应元素的名次,保存在另外一个数组里

    名次定义为:从小到大排序,相等的元素先出现的排在前边

      void ranking(T a[], int n, int r[])函数得出名次数组r[ ]

    void rearrange(T a[], int n, int r[])函数按照名次信息对原数组进行排序

    注意:数组作为参数传递时,有两种途径,一种是 int a[ ],另一种是 int *a,无论哪种途径,都不是复制后传值,

    而是直接传递地址值,所以在函数内改变数组内容会直接改变原数组的内容

     1 //类型模板.h
     2 
     3 #ifndef LEIXINGMUBAN
     4 #define LEIXINGMUBAN
     5 #pragma once
     6 template<class T>
     7 void ranking(T a[], int n, int r[])
     8 {
     9     for (int i = 0; i < n; i++)
    10     {
    11         r[i] = 0;
    12     }
    13     for (int i = 0; i < n; i++)
    14     {
    15         for (int j = i + 1; j < n; j++)
    16         {
    17             if (a[i] > a[j])
    18                 r[i]++;
    19             else
    20                 r[j]++;
    21         }
    22     }
    23 }
    24 
    25 template<class T>
    26 void rearrange(T a[], int n, int r[])
    27 {
    28     T* u = new T[n];
    29     for (int i = 0; i < n; i++)
    30     {
    31         u[r[i]] = a[i];
    32     }
    33 
    34     for (int i = 0; i < n; i++)
    35     {
    36         a[i] = u[i];
    37     }
    38     delete[]u;
    39 }
    40 
    41 #endif // !LEIXINGMUBAN
     1 //main
     2 
     3 /*
     4 先将一个数组的名词计算出来保存到一个同等大小
     5 的数组里,然后利用名次对原数组重新排序
     6 */
     7 #include<iostream>
     8 #include"类型模板.h"
     9 using namespace std;
    10 
    11 
    12 int main()
    13 {
    14     double a[5] = { 1.9,3.2,3.1,4.25,2 };
    15     int r[5];
    16     ranking(a, 5, r);
    17     for (int k = 0; k < 5; k++)
    18     {
    19         cout << a[k] << endl;
    20     }
    21     cout << "----------------" << endl;
    22     rearrange(a, 5, r);
    23     for (int k = 0; k < 5; k++)
    24     {
    25         cout << a[k] << endl;
    26     }
    27 }

  • 相关阅读:
    TFTP服务器的使用
    SecureCRT Ver 8.1.4 整合汉化绿色版一体包
    SecureCRT Ver 8.1.4 整合汉化绿色版一体包
    深度好贴,mark一下!
    DataSnap——利用TParams进行多表事务更新
    临时表经典使用范例
    PHP对文件的操作方法
    中国银行支付接口(ecshop版)
    常用支付接口实例php版
    PHPCMS网站二次开发配置要点
  • 原文地址:https://www.cnblogs.com/hustsss/p/11176808.html
Copyright © 2011-2022 走看看