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

Ami*_*mit 1 ada

我参加了算法课程,其中讲师决定使用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;
Run Code Online (Sandbox Code Playgroud)

下列:

for Source_Index in Destination_Index + 1 .. Data'Last loop
Run Code Online (Sandbox Code Playgroud)

将导致从给定元素(数据1)遍历数组到最后一个元素,但是如果我希望从最后一个元素遍历到第一个元素,则以下似乎不起作用.

for Source_Index in Data'Last .. Data'First loop
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮我解决这个微不足道的问题,那将是非常有帮助的,这样我就可以继续处理手头的主要问题,即学习算法.

Ond*_*cny 5

一系列A .. B具有A > B在一个空的范围的结果.关于for循环,有reverse关键字来定义降序循环(ARM 5.5(9)的结尾).因此reverse A .. B,在哪里A < B,将导致从B向下循环A.

剩下的就是为了学习而留给你的.为了学习一些东西,你无法避免在第一时间学习.