開拓者 TB 5條均線按值的大小再進行從大道小的順序從新排序
作者:開拓者 TB 來源:cxh99.com 發布時間:2013年04月07日
|
- 咨詢內容: 想實現以個簡單的排序功能,把5條均線按值的大小再進行從大道小的順序從新排序,保存在全局變量中
Params
numeric length(5);
MA1=Average(C,5);
MA2=Average(C,10);
MA3=Average(C,20);
MA4=Average(C,30);
MA5=Average(C,60);
SetGlobalVar(0,MA1);
SetGlobalVar(1,MA2);
SetGlobalVar(2,MA3);
SetGlobalVar(3,MA4);
SetGlobalVar(4,MA5);
// 排序
for i=0 to length-2
{
for j=1 to length-1
{
if (GetGlobalVar(i)<GetGlobalVar(j))
{
intermediate=GetGlobalVar(i);
SetGlobalVar(i,GetGlobalVar(j));
SetGlobalVar(j,intermediate);
}
}
}
PlotNumeric("1",GetGlobalVar(0));
PlotNumeric("2",GetGlobalVar(1));
PlotNumeric("3",GetGlobalVar(2));
PlotNumeric("4",GetGlobalVar(3));
PlotNumeric("5",GetGlobalVar(4));
但輸出的結果排序結果經常不對,請問是我程序的問題還是什么問題嗎,謝謝
- TB技術人員: i = 0 to length-2
j = i to length-1
快速排序嘛
- TB客服:
sorakiraa 發表于 2013-3-25 15:58
i = 0 to length-2
j = i to length-1
謝謝大俠的回復 試了下 的確這次排序就對了
但不是很明白為什么呀?
- 網友回復:
woshibing 發表于 2013-3-26 08:43
謝謝大俠的回復 試了下 的確這次排序就對了
但不是很明白為什么呀?
因為你是要把大的數換到前面來,所以只用將下標大于i 的與其比較
比如i=0的一輪過后,最大的已經換到0處了,就不需要再將其與后面的比較了
這是個基本算法。。。應該不難理解
- 網友回復: 恩 對的 明白了 謝謝啦