我参加了算法课程,其中讲师决定使用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)
如果有人可以帮我解决这个微不足道的问题,那将是非常有帮助的,这样我就可以继续处理手头的主要问题,即学习算法.
一系列A .. B具有A > B在一个空的范围的结果.关于for循环,有reverse关键字来定义降序循环(ARM 5.5(9)的结尾).因此reverse A .. B,在哪里A < B,将导致从B向下循环A.
剩下的就是为了学习而留给你的.为了学习一些东西,你无法避免在第一时间学习.