1

我使用 GWBASIC 但无法找到一种简单的排序方法(数字) 我只有 4 个数字要处理(范围 150-200) 经过一些计算后,我得到了这 4 个数字,我需要将它们按升序排序到转到下一步。现在我手动执行此操作,查看屏幕上的输出并查找最小的数字并按升序输入。浪费了很多时间,更别提眼睛疲劳了!我一直在寻找各种尝试公式,但找不到适合我的公式。看起来是这样的: SM1 = 121.50 SM2 = 123.65 SM3 = 117.80 SM4 = 119.50 新的订单值应该是: XS1 = 117.80 XS2 = 119.50 XS3 = 121.50 XS4 = 123.65

我不需要它来打印或在屏幕上看到它,它应该只是移动到程序的下一个阶段。我将非常感谢一个非常简单的过程,以便我可以输入我的 BASIC 程序。谢谢 !

4

2 回答 2

2

第一个解决方案仅对 4 个数字有效。

A=SM1 : B=SM2 : C=SM3 : D=SM4
If B<A Then Swap A,B
If C<A Then Swap A,C : Swap B,C Else If C<B Then Swap B,C
If D<A Then Swap A,D : Swap B,D : Swap C,D Else If D<B Then Swap B,D : Swap C,D Else If D<C Then Swap C,D
XS1=A : XS2=B : XS3=C : XS4=D

使用数组的第二种解决方案。这可以很容易地适应对更多数字进行排序。

Dim A(3) : A(0)=SM1 : A(1)=SM2 : A(2)=SM3 : A(3)=SM4
For J%=1 To 3 : REM *** 3 is one less than the number of values
  A=A(J%)
  For I%=0 To J%-1
    If A<A(I%) Then While I%<J% : Swap A,A(I%) : I%=I%+1 : Wend : A(I%)=A
  Next
Next
XS1=A(0) : XS2=A(1) : XS3=A(2) : XS4=A(3)
于 2015-02-10T21:57:15.547 回答
1

我认为您可以在数组上使用简单的冒泡排序。

10 Dim a(3)  
20 a(0)=121.50
30 a(1)=123.65  
40 a(2)=117.80  
50 a(3)=119.50  
60 For L1 = 0 to 2  
70    For L2 =L1+1 to 3  
80       If a(L1)>a(L2) then swap a(L1), a(L2)  
90    Next L2  
100 Next L1  
110 For n = 0 to 3  
120   print a(n)  
130 Next n  
140 End  

如果同意就使用逻辑

于 2016-05-01T04:48:43.167 回答