我参加了一个算法课程,其中教师决定使用Ada作为编程语言工具来测试我们的理解。争论的焦点是ADA语言非常接近CLRS书中出现的伪代码。
下面的代码是ADA中选择排序的片段:
from django.conf.urls import patterns, include, url
from todo import views
from rest_framework import viewsets, routers
from django.contrib import admin
router = routers.DefaultRouter()
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', admin.site.urls),
url(r'^', include(router.urls)),
)
以下内容:
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;
将导致从给定元素(Data 1)遍历数组到最后一个元素,但是如果我希望从最后一个元素遍历到第一个元素,则以下内容似乎不起作用。
for Source_Index in Destination_Index + 1 .. Data'Last loop
如果有人可以帮我解决这个微不足道的问题,那将是非常有帮助的,这样我就可以继续处理手头的主要问题,即学习算法。
答案 0 :(得分:5)
A .. B
范围A > B
会产生空白范围。关于for
周期,reverse
关键字定义了一个降序循环(ARM 5.5 (9)的结尾)。因此,reverse A .. B
,其中A < B
将导致从B
循环到A
。
剩下的就是为了学习而留给你的。为了学习一些东西,你不能避免在第一时间学习。