Я взял курс алгоритма, в котором инструктор решил использовать Ada в качестве инструмента языка программирования, чтобы проверить наше понимание. Аргументом было то, что язык ADA довольно близок к псевдокоду, который появляется в книге CLRS.Перемещение массива от данного индекса к первому
Ниже код является надрезом для этакого выбора в АДА:
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
приведет обход массива из данного элемента (Data 1) до последнего элемента, однако если Я хочу перейти от последнего элемента к первому, следующие, похоже, не работают.
for Source_Index in Data'Last .. Data'First loop
Было бы большую помощь, если кто-то может помочь мне с этой тривиальной проблемой, так что я могу получить с главной проблемой под рукой, которая алгоритмов обучения.
Более того, нисходящий диапазон ('для J в 10 .. 0') пуст, так что цикл проходит в нулевое время. –
@SimonWright Вот что я имел в виду под термином «Это привело бы к пустым диапазонам». Не стесняйтесь редактировать и уточнять мой ответ, если это неясно. –
@SimonWright Я думаю, что в соответствии с примечанием 7 (§ 12) для обратного диапазона требуется 'A