目录
寻找解决方案的方法
暴力方法
示例
输出
高效方法
上述代码的说明
结论
首页 后端开发 C++ 使用C++编写的数组元素排序的排名

使用C++编写的数组元素排序的排名

Aug 26, 2023 pm 10:45 PM
数组排序 排名 c编程

使用C++编写的数组元素排序的排名

在给定的问题中,我们需要对数组的所有给定元素进行排名,最小的数字具有最小的排名,最大的具有最大的排名。例如,我们还需要根据数字的频率来更改数字的排名 -

Input : 20 30 10
Output : 2.0 3.0 1.0

Input : 10 12 15 12 10 25 12
Output : 1.5, 4.0, 6.0, 4.0, 1.5, 7.0, 4.0

Here the rank of 10 is 1.5 because there are two 10s present in the given array now if we assume they both take different ranks i.e. 1 and 2 and we thus divide it within themselves so their rank becomes 1.5 and 1.5.

Input : 1, 2, 5, 2, 1, 60, 3
Output : 1.5, 3.5, 6.0, 3.5, 1.5, 7.0, 5.0
登录后复制

寻找解决方案的方法

有两种不同的方法来寻找解决方案,它们是 -

暴力方法

在这种方法中,我们将循环,选择任何特定元素,并确定其排名。

示例

#include <bits/stdc++.h>
using namespace std;

int main() {
   int arr[] = {1, 2, 5, 2, 1, 25, 2}; // given array
   int n = sizeof(arr) / sizeof(arr[0]); // size of our given array

   float rank[n] = {0}; // our ranking array
   for (int i = 0; i < n; i++) {
      int r = 1; // the number of elements greater than arr[i]
      int s = 1; // the number of elements equal to arr[i]

      for (int j = 0; j < n; j++) {
         if (j != i && arr[j] < arr[i])
            r += 1;
   
         if (j != i && arr[j] == arr[i])
            s += 1;
      }
      rank[i] = r + (float)(s - 1) / (float) 2; // using formula
      //to obtain rank of particular element

   }

   for (int i = 0; i < n; i++) // outputting the ranks
      cout << rank[i] << &#39; &#39;;

   return 0;
}
登录后复制

输出

1.5 4 6 4 1.5 7 4
登录后复制

该程序的时间复杂度为O(N*N),其中N是现在给定数组的大小;正如你所看到的,我们的时间复杂度不好,因此我们将提高其效率,以更好地适应更高的约束。

高效方法

在这种方法中,我们将采取一个新数组并对其进行排序,因为数组已排序,现在我们知道相同排名的所有元素将在一起,因此现在我们像往常一样对它们进行排名,然后计算特定元素的排名。

示例

#include <bits/stdc++.h>

using namespace std;

int main() {
   int arr[] = {1, 2, 5, 2, 1, 60, 3}; // given array
   int n = sizeof(arr) / sizeof(arr[0]); // size of our given array
   float rank[n] = {0}; // our ranking array
   int old[n];
   for(int i = 0; i < n; i++)
   old[i] = arr[i];
   sort(arr, arr+n); // sorting the array
   int prev = arr[0];
   int r = 1; // ranks
   int s = 0; // frequency
   int tot = 0; // will stack up all the rank contained by an element
   map<int, float> rrank;

   for (int i = 0; i < n; i++) {
      if(prev == arr[i]) {
         s++;
         tot += r;
      } else {
         float now = 0;
         now = (float)tot/s; // dividing the ranks equally
         rrank[prev] = now;
         prev = arr[i];
         tot = r;
         s = 1;
      }
      r++;
   }
   rrank[arr[n-1]] = (float)tot/s;
   for (int i = 0; i < n; i++) // outputting the ranks
      cout << rrank[old[i]] << " ";

   return 0;
}
登录后复制

输出

1.5 3.5 6 3.5 1.5 7 5
登录后复制

上述代码的说明

在这种方法中,我们对数组进行排序,然后从头开始对每个元素进行排名(排名从 1 开始)。现在,如果我们的上一个元素等于当前元素,我们就会增加 s 并叠加到我们的排名总和。当我们的元素发生更改时,我们将前面的元素的排名分开,刷新 s 和总计,然后继续我们的代码。

结论

在本文中,我们解决了一个问题来找到数组中所有元素的排名。我们还学习了解决这个问题的C++程序以及解决这个问题的完整方法(正常且高效)。我们可以用其他语言编写相同的程序,例如C、java、python等语言。

以上是使用C++编写的数组元素排序的排名的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
2024 CSRankings全美计算机科学排名发布!CMU霸榜,MIT跌出前5 2024 CSRankings全美计算机科学排名发布!CMU霸榜,MIT跌出前5 Mar 25, 2024 pm 06:01 PM

2024CSRankings全美计算机科学专业排名,刚刚发布了!今年,全美全美CS最佳大学排名中,卡耐基梅隆大学(CMU)在全美和CS领域均名列前茅,而伊利诺伊大学香槟分校(UIUC)连续六年稳定地位于第二。佐治亚理工学院则排名第三。然后,斯坦福大学、圣迭戈加利福尼亚大学、密歇根大学、华盛顿大学并列世界第四。值得注意的是,MIT排名下跌,跌出前五。CSRankings是由麻省州立大学阿姆赫斯特分校计算机与信息科学学院教授EmeryBerger发起的全球院校计算机科学领域排名项目。该排名基于客观的

PHP表单处理:表单数据排序与排名 PHP表单处理:表单数据排序与排名 Aug 09, 2023 pm 06:01 PM

PHP表单处理:表单数据排序与排名在Web开发中,表单是一种常见的用户输入方式。当我们收集到来自用户的表单数据后,通常需要对这些数据进行处理和分析。本文将介绍如何使用PHP对表单数据进行排序与排名,以便更好地展示和分析用户提交的数据。一、表单数据排序当我们收集到用户提交的表单数据后,可能会发现这些数据的顺序不一定符合我们的要求。而对于需要按照特定规则展示或分

Vue统计图表的排名和比较功能实现 Vue统计图表的排名和比较功能实现 Aug 26, 2023 am 09:45 AM

Vue统计图表的排名和比较功能实现在数据可视化领域中,统计图表是一种直观清晰地展示数据的方式。Vue作为一种流行的前端框架,提供了丰富的工具和组件来实现各种图表。本文将介绍如何使用Vue实现统计图表的排名和比较功能。在开始之前,我们需要先安装Vue和相关的图表库。我们将使用Chart.js作为图表库,该库提供了丰富的图表类型和交互功能。可以通过以下命令安装C

PHP 中保留键名的快速数组排序方法 PHP 中保留键名的快速数组排序方法 May 02, 2024 pm 03:06 PM

PHP中保留键名的快速数组排序方法:使用ksort()函数对键进行排序。使用uasort()函数使用用户定义的比较函数进行排序。实战案例:要按分数对用户ID和分数的数组进行排序,同时保留用户ID,可以使用uasort()函数和自定义比较函数。

使用C++编写代码,找到第N个非平方数 使用C++编写代码,找到第N个非平方数 Aug 30, 2023 pm 10:41 PM

我们都知道不是任何数字的平方的数字,如2、3、5、7、8等。非平方数有N个,不可能知道每个数字。因此,在本文中,我们将解释有关无平方数或非平方数的所有内容,以及在C++中查找第N个非平方数的方法。第N个非平方数如果一个数是整数的平方,则该数被称为完全平方数。完全平方数的一些例子是-1issquareof14issquareof29issquareof316issquareof425issquareof5如果一个数不是任何整数的平方,则该数被称为非平方数。例如,前15个非平方数是-2,3,5,6,

JS数组排序:sort()方法的工作原理和机制深入解析 JS数组排序:sort()方法的工作原理和机制深入解析 Dec 28, 2023 am 11:47 AM

深入理解JS数组排序:sort()方法的原理与机制,需要具体代码示例导语:数组排序是在我们日常的前端开发工作中非常常见的操作之一。JavaScript中的数组排序方法sort()是我们最常使用的数组排序方法之一。但是,你是否真正了解sort()方法的原理与机制呢?本文将带你深入理解JS数组排序的原理和机制,并提供具体的代码示例。一、sort()方法的基本用法

使用C++编写的数组右旋转的反转算法 使用C++编写的数组右旋转的反转算法 Sep 08, 2023 pm 08:17 PM

在本文中,我们将了解逆转算法,将给定的数组向右旋转k个元素,例如−Input:arr[]={4,6,2,6,43,7,3,7},k=4Output:{43,7,3,7,4,6,2,6}Explanation:Rotatingeachelementofarrayby4-elementtotherightgives{43,7,3,7,4,6,2,6}.Input:arr[]={8,5,8,2,1,4,9,3},k=3Output:{4,9,3,8,5,8,2,1}寻找解决方案的方

在C编程中,找到一个圆的面积 在C编程中,找到一个圆的面积 Aug 25, 2023 pm 10:57 PM

圆是封闭图形。圆上的所有点到圆内一点的距离都相等。中心点称为圆心。点到圆心的距离称为半径。面积是封闭图形尺寸跨度的定量表示。圆的面积是圆的尺寸内包围的面积。计算圆面积的公式,Area=π*r*r为了计算面积,我们给出了圆的半径作为输入,我们将使用公式来计算面积,算法STEP1:Takeradiusasinputfromtheuserusingstdinput.STEP2:Calculatetheareaofcircleusing,  area=(

See all articles