以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [求助]冒泡法升序无值,谢谢  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=10937)

--  作者:ENK
--  发布时间:2012/4/6 15:38:05
--  [求助]冒泡法升序无值,谢谢

variable:B[6]=0;
variable:A[6]=0;
A[1]:=REF(C,1);
A[2]:=REF(C,2);
A[3]:=REF(C,3);
A[4]:=REF(C,4);
A[5]:=REF(C,5);
A[6]:=REF(C,6);  //此处有值
FOR I=1 TO I=6 DO B[I]:=IF(A[I]>C,A[I],1);   //这里就没有值了
FOR K=1 TO K=6 DO
 BEGIN
  IF B[K]>B[K+1] THEN
  BEGIN
  T:=B[K];
  B[K]:=B[K+1];
  B[K+1]:=T;
 END
END
最小值:B[1],LINETHICK0;  //这里也没有值
[此贴子已经被作者于2012-4-6 15:41:43编辑过]

--  作者:Leon
--  发布时间:2012/4/6 16:12:43
--  
稍后工作人员给出解答
--  作者:Leon
--  发布时间:2012/4/6 16:26:27
--  

冒泡排序是双重for循环嵌套

外层循环条件为:n-1(n为数组长度)

内层循环条件为: n-1-i (i为外层循环中的临时变量)

然后在内层循环中交换变量

 

 


--  作者:ENK
--  发布时间:2012/4/6 16:30:57
--  
我想求最近6个收盘价排升序,应该怎么写

--  作者:董小球
--  发布时间:2012/4/6 16:35:44
--  
然后呢,排序好了楼主准备怎么用呢?
--  作者:ENK
--  发布时间:2012/4/6 16:40:48
--  
输出第一个与第四个的值在图表上(供分析用),然后算出数组第一个与第四个之差
[此贴子已经被作者于2012-4-6 16:42:05编辑过]

--  作者:Leon
--  发布时间:2012/4/6 16:55:56
--  

//仅供参考

 

B[1]:=0;
B[2]:=0;
B[3]:=0;
B[4]:=0;
B[5]:=0;
B[6]:=0;

A[1]:=0;
A[2]:=0;
A[3]:=0;
A[4]:=0;
A[5]:=0;
A[6]:=0;

A[1]:=REF(C,1);
A[2]:=REF(C,2);
A[3]:=REF(C,3);


FOR I=1 TO (3-1) DO
BEGIN
FOR J=1 TO (3-1-I) DO
BEGIN
IF B[J]>B[J+1] THEN
  BEGIN
  T:=B[J];
  B[J]:=B[J+1];
  B[J+1]:=T;
  END
END
END

 


--  作者:Leon
--  发布时间:2012/4/6 16:58:53
--  

上面那个是以三个收盘价进行排序,这个是6个收盘价求升序

仅供参考

 

B[1]:=0;
B[2]:=0;
B[3]:=0;
B[4]:=0;
B[5]:=0;
B[6]:=0;

A[1]:=0;
A[2]:=0;
A[3]:=0;
A[4]:=0;
A[5]:=0;
A[6]:=0;

A[1]:=REF(C,1);
A[2]:=REF(C,2);
A[3]:=REF(C,3);
A[4]:=REF(C,4);
A[5]:=REF(C,5);
A[6]:=REF(C,6);

FOR I=1 TO (6-1) DO
BEGIN
FOR J=1 TO (6-1-I) DO
BEGIN
IF B[J]>B[J+1] THEN
  BEGIN
  T:=B[J];
  B[J]:=B[J+1];
  B[J+1]:=T;
  END
END
END

 


--  作者:ENK
--  发布时间:2012/4/6 17:40:08
--  
请问只排序大于当前收盘价的,应该在什么位置加条件呢,谢谢楼上的大哥
--  作者:ENK
--  发布时间:2012/4/6 22:19:53
--  

variable:B[6]=0;

B[1]:=REF(C,1);
B[2]:=REF(C,2);
B[3]:=REF(C,3);
B[4]:=REF(C,4);
B[5]:=REF(C,5);
B[6]:=REF(C,6);

FOR I=1 TO (7-1) DO
BEGIN
FOR J=1 TO (7-1-I) DO
BEGIN
IF B[J]>B[J+1] THEN
  BEGIN
  T:=B[J];
  B[J]:=B[J+1];
  B[J+1]:=T;
  END
END
END

请问,加个条件,只把大于当前收盘价的数组元素进行排升序,把不符合的数组元素排除或者放在数组的最后面

(这样保证排序后的数组前几个元素为满足条件的数组元素),应该怎么做,想了很久都没有想出来,谢谢