【问题标题】:Insertion Sort INVALID DIMENSION error in BASICBASIC 中的插入排序 INVALID DIMENSION 错误
【发布时间】:2021-08-26 18:09:44
【问题描述】:

我正在努力理解为什么以下 TI-BASIC 中的插入排序程序有时可以工作,但有时会出现尺寸错误。

0→dim(L₁  // clear the list L1
randIntNoRep(1,5,5)→L₁
For(I,2,5)
L₁(I)→K
I-1→J
While J>0 and L₁(J)>K
L₁(J)→L₁(J+1)
J-1→J
End  // end while
K→L₁(J+1)
End  // end for
Disp L₁

据我所知,该代码是基于此伪代码的插入排序的忠实实现:

for i ← 2 to n
    key ← A[i]
    j ← i − 1
    while j > 0 and A[j] > key do
        A[j + 1] ← A[j]
        j ← j − 1
    A[j + 1] ← key

我尝试过手动单步执行代码,看起来 BASIC 版本的功能与伪代码相同。请问我错过了什么?

【问题讨论】:

    标签: algorithm insertion-sort basic ti-basic


    【解决方案1】:

    好的,我看到了问题。 TI-BASIC 似乎没有进行短路布尔评估,因此它有时会尝试访问索引 0 处的列表,但会失败。在 TI-BASIC 中重构真的很痛苦,因为甚至没有 break 声明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多