从给定索引到第一个的数组遍历

Array traversal from a given index to the first

我参加了一个算法课程,其中讲师决定使用 Ada 作为编程语言工具来测试我们的理解。争论的焦点是 ADA 语言与 CLRS 书中出现的伪代码非常接近。

下面的代码是 ADA 中选择排序的片段:

   procedure Selection_Sort(Data : in out List) is
   begin
      for Destination_Index in Data'Range loop
         for Source_Index in Destination_Index + 1 .. Data'Last loop
            if Data(Source_Index) < Data(Destination_Index) then
               Swap(Data, Source_Index, Destination_Index);
            end if;
         end loop;
      end loop;
   end Selection_Sort;

以下:

for Source_Index in Destination_Index + 1 .. Data'Last loop

将导致从给定元素 (Data1) 遍历数组到最后一个元素,但是如果我想从最后一个元素遍历到第一个元素,以下似乎不起作用。

for Source_Index in Data'Last .. Data'First loop

如果有人能帮我解决这个小问题,那将是很大的帮助,这样我就可以继续手头的主要问题,即学习算法。

具有 A > B 的范围 A .. B 导致空范围。关于 for 循环,有 reverse 关键字定义下降循环(ARM 5.5 (9) 结束)。因此 reverse A .. B,其中 A < B,将导致从 B 向下循环到 A

剩下的就交给你们自己学习了。要想学到东西,首先就不能避免学习。