|
Программируем по-русски
|
Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку. Издатель Глагола
|
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) ОТДЕЛ Вставкой2; (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) (* НАЗНАЧЕНИЕ: упорядочивание ряда двоичной вставкой *) (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Упорядочить-(ряд+:РЯД ИЗ ЦЕЛ); (* Цель: упорядочивание ряда целых чисел двоичной вставкой * До: <ряд> - исходный ряд * После: <ряд> - упорядоченный ряд *) ПЕР число:ЦЕЛ; (* обрабатываемое число *) позНеуп:ЦЕЛ; (* до этой позиции ряд уже упорядочен *) позВставки:ЦЕЛ;(* позиция вставки для обрабатываемого числа *) позНачала,поз:ЦЕЛ; УКАЗ ОТ позНеуп:=1 ДО РАЗМЕР(ряд)-1 ВЫП число:=ряд[позНеуп]; (* двоичный поиск позиции вставки *) позНачала:=0; позВставки:=позНеуп; ПОКА позНачала < позВставки ВЫП поз:=(позВставки+позНачала) ДЕЛИТЬ 2; ЕСЛИ число >= ряд[поз] ТО позВставки:=поз ИНАЧЕ позНачала:=поз+1 КОН КОН; (* раздвигаем в этом месте ряд *) ОТ поз:=позНеуп-1 ДО позВставки ПО -1 ВЫП ряд[поз+1]:=ряд[поз] КОН; (* вставляем туда число *) ряд[позВставки]:=число КОН КОН Упорядочить; КОН Вставкой2. ▲ Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
|
|