嗨我與德爾福西雅圖10個發展中國家。我實際上需要得到一個數組中值的幫助例如:中位數數組的
allitems: array[1..500] of Double;
我給過程中的數組中的每個arrayitem的值。所以我得到了500個雙倍數值的數組,並希望從這500個數值中獲得中值。首先,我想我必須將數組從低到高排序並在獲取中位數後排序。那麼我怎麼排序數組,然後得到排序後的中位數?
嗨我與德爾福西雅圖10個發展中國家。我實際上需要得到一個數組中值的幫助例如:中位數數組的
allitems: array[1..500] of Double;
我給過程中的數組中的每個arrayitem的值。所以我得到了500個雙倍數值的數組,並希望從這500個數值中獲得中值。首先,我想我必須將數組從低到高排序並在獲取中位數後排序。那麼我怎麼排序數組,然後得到排序後的中位數?
偶數個元素的中值被定義爲中心元素的平均值:
var
allitems : TArray<double>;
TArray.Sort<double>(allitems);
median := (allitems[249] + allitems[250])/2; // TArray<double> starts with index 0
感謝您的回答!我知道你如何得到中位數,但你如何對數組進行排序,或者你爲什麼要定義數組?我剛剛在我的問題中定義了我的數組。而TArray.Sort不工作(未聲明的標識符在tarray) –
你擁有包括「System.Generics.Collections」在評論你的問題的文檔鏈接指示? – DNR
你大概用Delphi @Liam的一些古老的版本? –
你可以找到rosettacode.org工作算法:
program AveragesMedian;
{$APPTYPE CONSOLE}
uses Generics.Collections, Types;
function Median(aArray: TDoubleDynArray): Double;
var
lMiddleIndex: Integer;
begin
TArray.Sort<Double>(aArray);
lMiddleIndex := Length(aArray) div 2;
if Odd(Length(aArray)) then
Result := aArray[lMiddleIndex]
else
Result := (aArray[lMiddleIndex - 1] + aArray[lMiddleIndex])/2;
end;
begin
Writeln(Median(TDoubleDynArray.Create(4.1, 5.6, 7.2, 1.7, 9.3, 4.4, 3.2)));
Writeln(Median(TDoubleDynArray.Create(4.1, 7.2, 1.7, 9.3, 4.4, 3.2)));
end.
下面是一個不大不小的鏈接TArray類的方法。它可以幫助你開始上的排序:http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Gene[email protected]_of_T.html –
您可能會發現這個維基百科頁面是有用的,太: https://en.wikipedia.org/wiki/Selection_algorithm –
這是什麼都沒有做的中值。你的問題很簡單,「我如何排列數組?」 –