Реализация на процедурном языке программирования
While ar>m do Dec (j); // поменяв ><в этих двух строках. Procedure sort (var ar: array of real; low, high: integer); Procedure qSort (var ar: array of real); Let rec quicksort = function. Wsp:=ar; ar: =ar; ar: =wsp; Sort (ar, 0, High (ar)); H: t -> quicksort (). If i<=j then begin. H] @ quicksort ();; Var i, j: integer; Inc (i); Dec (j); M, wsp: real; Until i>j; While ar. If low. Repeat. Begin… Читать ещё >
Реализация на процедурном языке программирования (реферат, курсовая, диплом, контрольная)
В качестве примера реализации указанного алгоритма был выбран язык Паскаль, так как он наиболее прост в понимании и более показателен в исполнении.
procedure qSort (var ar: array of real);
procedure sort (var ar: array of real; low, high: integer);
var i, j: integer;
m, wsp: real;
begin.
i:=low; j:=high; m:=ar[(i+j) div 2]; // Взятие среднего опорного элемента.
repeat.
while ar[i].
while ar[j]>m do Dec (j); // поменяв >< в этих двух строках.
if i<=j then begin.
wsp:=ar[i]; ar[i]: =ar[j]; ar[j]: =wsp;
Inc (i); Dec (j);
end;
until i>j;
if low.
if i.
end;
begin.
sort (ar, 0, High (ar));
end;
Листинг 1 Реализация сортировки методом Хоара на Паскале.
Реализация на функциональном языке программирования
На функциональном языке программирования F# сортировка будет выглядеть значительно более компактно:
let rec quicksort = function.
[ ] -> [ ].
| h: t -> quicksort ([ for x in t when x x]).
@ [h] @ quicksort ([ for x in t when x>h -> x]);;
Листинг 2 Реализация сортировки методом Хоара на языке F#.
Итак, мы видим, что F# довольно приятен, плюс ко всему, разница в реализации между Листингом 1 и Листингом 2 наглядно показывает нам, что функциональное программирование — это принципиально иная область, разительно отличающаяся от привычных нам традиционных языков, типа C#.
Так же мы ясно видим, что преимущество функциональных языков программирования перед языками объектно-ориентированными — это чистота функций. Далее, в целом можно сказать, что функциональное программирование позволяет нам писать в несколько раз меньше кода, но при этом заставляет больше времени уделять проектированию и осмыслению кода.