使用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] << ' '; 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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

2024CSRankings全美電腦科學專業排名,剛剛發布了!今年,全美全美CS最佳大學排名中,卡內基美隆大學(CMU)在全美和CS領域均名列前茅,而伊利諾大學香檳分校(UIUC)則連續六年穩定地位於第二。佐治亞理工學院則排名第三。然後,史丹佛大學、聖迭戈加州大學、密西根大學、華盛頓大學並列世界第四。值得注意的是,MIT排名下跌,跌出前五名。 CSRankings是由麻省州立大學阿姆赫斯特分校電腦與資訊科學學院教授EmeryBerger發起的全球院校電腦科學領域排名計畫。該排名是基於客觀的

PHP表單處理:表單資料排序與排名在Web開發中,表單是常見的使用者輸入方式。當我們收集到來自使用者的表單資料後,通常需要對這些資料進行處理和分析。本文將介紹如何使用PHP對表單資料進行排序與排名,以便更好地顯示和分析使用者提交的資料。一、表單資料排序當我們收集到使用者提交的表單資料後,可能會發現這些資料的順序不一定符合我們的要求。而對於需要依照特定規則展示或分

Vue統計圖表的排名和比較功能實現在資料視覺化領域中,統計圖表是一種直觀且清晰地展示資料的方式。 Vue作為一種流行的前端框架,提供了豐富的工具和組件來實現各種圖表。本文將介紹如何使用Vue實現統計圖表的排名和比較功能。在開始之前,我們需要先安裝Vue和相關的圖表庫。我們將使用Chart.js作為圖表庫,該庫提供了豐富的圖表類型和互動功能。可以透過以下命令安裝C

PHP中保留鍵名的快速數組排序方法:使用ksort()函數對鍵進行排序。使用uasort()函數使用使用者定義的比較函數進行排序。實戰案例:若要依分數對使用者ID和分數的陣列進行排序,同時保留使用者ID,可以使用uasort()函數和自訂比較函數。

我們都知道不是任何數字的平方的數字,如2、3、5、7、8等。非平方數有N個,不可能知道每個數字。因此,在本文中,我們將解釋有關無平方數或非平方數的所有內容,以及在C++中尋找第N個非平方數的方法。第N個非平方數如果一個數是整數的平方,則該數稱為完全平方數。完全平方數的一些例子是-1issquareof14issquareof29issquareof316issquareof425issquareof5如果一個數不是任何整數的平方,則該數稱為非平方數。例如,前15個非平方數是-2,3,5,6,

深入理解JS數組排序:sort()方法的原理與機制,需要具體程式碼範例導語:陣列排序是在我們日常的前端開發工作中非常常見的操作之一。 JavaScript中的陣列排序方法sort()是我們最常使用的陣列排序方法之一。但是,你是否真正了解sort()方法的原理與機制呢?本文將帶你深入理解JS數組排序的原理和機制,並提供具體的程式碼範例。一、sort()方法的基本用法

在本文中,我們將了解逆轉演算法,將給定的陣列向右旋轉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}尋找解的方

圓是封閉圖形。圓上的所有點到圓內一點的距離都相等。中心點稱為圓心。點到圓心的距離稱為半徑。面積是封閉圖形尺寸跨距的定量表示。圓的面積是圓的尺寸內所包圍的面積。計算圓面積的公式,Area=π*r*r為了計算面積,我們給出了圓的半徑作為輸入,我們將使用公式來計算面積,算法STEP1:Takeradiusasinputfromtheuserusingstdinput.STEP2:Calculatetheareaofcircleusing, area=(
