演算法題中位數
Ⅰ 怎麼計算中位值
中位值演算法:將所有數排序,然後取最中間的數,如果是偶數則取中間的兩個數然後除以2。
比如說有99個數字從小到大排列,排在第50的,就是這組數的中位數。這個數字的前面有49個數字,後面有49個數字,它正好排在最中間,就是中位數。
中位值---是將所給的一組數從小到大或從大到小排列,奇數個數的話取中間的數字,偶數個數的話取中間兩個數的平均數。
(1)演算法題中位數擴展閱讀
1、特點
中位數:與數據的排列位置有關,某些數據的變動對它沒有影響;它是一組數據中間位置上的代表值,不受數據極端值的影響。
2、作用
中位數:作為一組數據的代表,可靠性比較差,因為它只利用了部分數據。但當一組數據的個別數據偏大或偏小時,用中位數來描述該組數據的集中趨勢就比較合適。
Ⅱ 數據統計的中位數演算法
此題的中位數演算法應該是將數據從小到大重新排列。N
是樣本數
這里樣本數為30.是偶數
則樣本中位數M=1/2【(X(15)+X(15+1)】
這里就是M=1/2【X(30/2)+X(30/2+1)】
其中X後面小括弧的是下標。我從這上面表示不出來。於是結果就是M=1/2(18+18)=18
明白了么?
中位數的計算主要是排序,然後根據樣本數量是奇數還是偶數,確定公式代入公式找到中位數就可以了
Ⅲ 中位數演算法
樓上才是白痴,自己什麼也不懂不要說的別人也是什麼也不懂。
就是因為有了你們這種人,世界多花了巨額的代價來多做不必要的工作。
很明顯樓主不是你這樣的。
實數的排序演算法復雜度是o(nlogn),這個中位數可以做到o(n)
下面我來說明這個演算法的過程。
演算法是基於歸並排序(merge-sort)的更改。
把中位數更改為等價的敘述。無序的n個數中的第int(n/2)大的元素。(k=int(n/2))
1.隨機化數據,這樣可以保證因為輸出時候的對稱性(可能的順序輸入)而造成的演算法退化。
for
(int
i=number.count;i>=0;i--)
swap(number[i],number[random(0,i-1)]);//swap,交換,random,0,k閉區間的隨機數。
2.歸並排序主過程。
mergesort(a,b,k)//尋找number數組中從下標a到下標b的元素中的第k大的元素。
{
t=number[a];
把這a,b中的元素從排,使a~p-1的元素比t小,p+1~b的元素比t大。number[p]=t;//o(n),這步你構造吧。不是很困難,偽代碼不寫太多。
//此時比t小元素有p-1-a+1=p-a個,
//分情況,如果k=p-a+1,返回t
//如果k>p-a+1,返回mergesort(p+1,b,k-(p-a+1))
//如果k
評論
0
0
0
載入更多
Ⅳ 什麼叫中位數.該怎麼求
中位數
(Median)統計學名詞。人教版初二教材內容。
將數據排序(從大到小或從小到大)後,位置在最中間的數值。即將數據分成兩部分,一部分大於該數值,一部分小於該數值。中位數的位置:當樣本數為奇數時,中位數=第(N+1)/2個數據
;
當樣本數為偶數時,中位數為第N/2個數據與第N/2+1個數據的算術平均值
。
理性認識:把一組數據按從小到大的數序排列,在中間的一個數(或兩個數的平均值)叫做這組數據的中位數。
中位數:
與數據的排列位置有關,某些數據的變動對它沒有影響;它是一組數據中間位置上的代表值,不受數據極端值的影響。因此某些數據的變動對它的中位數影響不大。當一組數據中的個別數據變動較大時,可用它來描述其集中趨勢。
中位數的演算法
求中位數時,首先要先進行數據的排序(從小到大),然後計算中位數的序號,分數據為奇數個與偶數個兩種來求.
中位數算出來可避免極端數據,代表著數據總體的中等情況。
如果總數個數是奇數的話,按從小到大的順序,取中間的那個數
如果總數個數是偶數個的話,按從小到大的順序,取中間那兩個數的平均數
(例:2、3、4、5、6、7
中位數:4+5/2=4.5)
在物價漲幅攀升的時候,適當提高企業退休人員養老金標准以及在職職工的工資,有利於保障他們的基本生活,並逐步提高生活質量。但是,只提供一個「平均數」讓人心裡總是有點不大踏實。一個平均數會掩蓋很多的問題,不久前網友還創作了這樣的打油詩:「張村有個張千萬,隔壁九個窮光蛋,平均起來算一算,人人都是張百萬。」對於這樣的問題,不是「平均數」的錯,也不是統計學的錯,統計學中有現成解決的辦法,就是計算「中位數」。所謂「中位數」,以一個51人的企業為例,把所有人員年收入從大到小排列,正中間的一位,即第26位的年收入就是這家企業年收入的中位數。打油詩里的「張村」個人財產中位數就是「零」。這個時候平均數不能說明的問題,中位數就說清楚了。
注意:是從小到大,或者從大到小,不是隨意亂排。
該題答案:(8+8)/2=8
Ⅳ 中位數演算法
此題的中位數演算法應該是將數據從小到大重新排列。n
是樣本數
這里樣本數為30.是偶數
則樣本中位數m=1/2【(x(15)+x(15+1)】
這里就是m=1/2【x(30/2)+x(30/2+1)】
其中x後面小括弧的是下標。我從這上面表示不出來。於是結果就是m=1/2(18+18)=18
明白了么?
中位數的計算主要是排序,然後根據樣本數量是奇數還是偶數,確定公式代入公式找到中位數就可以了
Ⅵ 數學中中位數的演算法
將數據排序後,位置在最中間的數值。即將數據分成兩部分,一部分大於該數值,一部分小於該數值。中位數的位置:當樣本數為奇數時,(N+1)/2;當樣本數為偶數時,N/2
Ⅶ 中位數怎麼求
一組數據按從小到大(或從大到小)的順序依次排列,處在中間位置的一個數(或最中間兩個數據的平均數.
中位數(Median)統計學名詞.人教版初二教材內容(在高中必修3中也會出現).北師大版初二上冊內容.
1、定義:一組數據按從小到大(或從大到小)的順序依次排列,處在中間位置的一個數(或最中間兩個數據的平均數,注意:和眾數不同,中位數不一定在這組數據中).
2、中位數的優缺點:中位數是樣本數據所佔頻率的等分線,它不受少數幾個極端值得影響,有時用它代表全體數據的一般水平更合適.
3、在頻率分布直方圖中,中位數左邊和右邊的直方圖的面積應該相等,由此可以估計中位數的值.
4、中位數也可表述為第50百分位數,二者等價.
5、直觀印象描述:一半比「我」小,一半比「我」大.
中位數的演算法
求中位數,首先要先進行數據的排序(從小到大),然後計算中位數的序號,分數據為奇數與偶數兩種來求.(排序時,相同的數字不能省略)
中位數算出來可避免極端數據,代表著數據總體的中等情況.
如果總數個數是奇數的話,按從小到大的順序,取中間的那個數
如果總數個數是偶數的話,按從小到大的順序,取中間那兩個數的平均數
(例:2、3、4、5、6、7
中位數:(4+5)/2=4.5)
在物價漲幅攀升的時候,適當提高企業退休人員養老金標准以及在職職工的工資,有利於保障他們的基本生活,並逐步提高生活質量.但是,只提供一個「平均數」讓人心裡總是有點不大踏實.一個平均數會掩蓋很多的問題,不久前網友還創作了這樣的打油詩:「張村有個張千萬,隔壁九個窮光蛋,平均起來算一算,人人都是張百萬.」對於這樣的問題,不是「平均數」的錯,也不是統計學的錯,統計學中有現成解決的辦法,就是計算「中位數」.所謂「中位數」,以一個51人的企業為例,把所有人員年收入從大到小排列,正中間的一位,即第26位的年收入就是這家企業年收入的中位數.打油詩里的「張村」個人財產中位數就是「零」.這個時候平均數不能說明的問題,中位數就說清楚了.
注意:是從小到大,或者從大到小,不是隨意亂排.
中位數是一組數據的中間水平.
實例
第1組數:1、2、3、6、7的中位數是3.
原理:如果總數個數是奇數的話,按從小到大的順序,取中間的那個數
第2組數:1、2、3、5的中位數是2.5.
原理:如果總數個數是偶數的話,按從小到大的順序,取中間那兩個數的平均數.(2+3)/2=2.5
第3組數:1、100、101、10000的中位數是100.5
注意:中位數
和數值的大小沒有絕對的關系
Ⅷ 演算法實現——X和Y的中位數問題
//VC2005 完成測試...
//O(log n)時間的演算法,
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
bool IsMiddle( int a[], int b[], int max, int &i, int& upper, int& lower , int& result )
{
bool bResult = false;
if ( a[i] >= b[max-i-2] && a[i] <= b[max-i-1] )
{
result = a[i];
if ( i== max-1 )
{
result+=b[0];
}
else
{
result += ( a[i+1] < b[max-i-1] ) ? a[i+1] : b[max-i-1];
}
bResult = true;
}
else
{
if ( a[i] < b[max-i-2])
{
lower=i;
i=upper;
}
else
{
upper=i;
i=lower;
}
if ( a[i] >= b[max-i-2] && a[i] <= b[max-i-1] )
{
bResult = true;
}
}
result/=2;
return bResult;
}
int GetMiddle( int a1[], int a2[], int length )
{
int result=0;
int i1, i2, u1=length-1, l1=0, u2=length-1, l2=0;
int index=0;
while ( abs( l1-u1) >1 || abs( l2-u2) >1 )
{
i1 = ( l1 + u1) /2;
if ( abs( l1-u1) >1 )
{
if ( IsMiddle( a1, a2, length, i1, u1, l1, result ) )
{
break;
}
}
i2 = ( l2+u2) /2;
if ( abs( u2-l2) >1 )
{
if ( IsMiddle( a2, a1, length, i2, u2, l2 , result ) )
{
break;
}
}
}
return result;
}
int main()
{
string inFileName("c:\\inFile.txt");
string outFileName("c:\\outFile.txt");
ifstream inFile( inFileName.c_str(), ios_base::in);
if ( inFile.fail() )
{
cerr<<" Open file: " << inFileName << " failed! Exit...";
return -1;
}
ofstream outFile( outFileName.c_str(), ios_base::out | ios_base::trunc );
if ( outFile.fail() )
{
cerr<<" Open file:" << outFileName << " failed! Exit...";
inFile.close();
return -1;
}
int len =0;
while ( !(inFile>> len) )
{
inFile.clear();
inFile.get();
}
if ( len <=0 )
{
inFile.close();
outFile.close();
cerr <<"Array length less or equal than zero! Exit...";
return -1;
}
int *a1 = new int[len];
int *a2 = new int[len];
int number=0, i=0;
for ( i=0; i<len *2 && !inFile.eof(); i++ )
{
while ( !(inFile>>number) && !inFile.eof() );
if ( i <len )
{
a1[i]=number;
}
else
{
a2[i%len]=number;
}
}
inFile.close();
if ( i< 2*len )
{
cerr<<"Elements count not matched...";
outFile.close();
delete []a1;
delete []a2;
return -1;
}
int mid = GetMiddle( a1, a2, len);
printf( "中間數: %d\n", mid );
outFile<<mid;
outFile.close();
delete []a1;
delete []a2;
return 0;
}
Ⅸ 中位數如何計算
一、如何計算
(1)首先要先排序(從小到大),然後計算中位數的序號,分數據為奇數個與偶數個兩種來求.
(2)中位數算出來可避免極端數據,代表著數據總體的中等情況。
(3)如果總數個數是奇數的話,按從小到大的順序,取中間的那個數
(4)如果總數個數是偶數個的話,按從小到大的順序,取中間那兩個數的平均數
二、拓展資料:
中位數(又稱中值,英語:Median),統計學中的專有名詞,代表一個樣本、種群或概率分布中的一個數值,其可將數值集合劃分為相等的上下兩部分。對於有限的數集,可以通過把所有觀察值高低排序後找出正中間的一個作為中位數。如果觀察值有偶數個,則中位數不唯一,通常取最中間的兩個數值的平均數作為中位數。
一個數集中最多有一半的數值小於中位數,也最多有一半的數值大於中位數。如果大於和小於中位數的數值個數均少於一半,那麽數集中必有若干值等同於中位數。
設連續隨機變數X的分布函數為F(X),那麼滿足條件P(X≤m)=F(m)=1/2的數稱為X或分布F的中位數。
對於一組有限個數的數據來說,它們的中位數是這樣的一種數:這群數據里的一半的數據比它大,而另外一半數據比它小。 計算有限個數的數據的中位數的方法是:把所有的同類數據按照大小的順序排列。如果數據的個數是奇數,則中間那個數據就是這群數據的中位數;如果數據的個數是偶數,則中間那2個數據的算術平均值就是這群數據的中位數。
中位數中位數(Medians)統計學名詞,是指將統計總體當中的各個變數值按大小順序排列起來,形成一個數列,處於變數數列中間位置的變數值就稱為中位數,用Me表示。當變數值的項數N為奇數時,處於中間位置的變數值即為中位數;當N為偶數時,中位數則為處於中間位置的2個變數值的平均數。