从给定索引到第一个的数组遍历
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
。
剩下的就交给你们自己学习了。要想学到东西,首先就不能避免学习。
我参加了一个算法课程,其中讲师决定使用 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
。
剩下的就交给你们自己学习了。要想学到东西,首先就不能避免学习。