Я делаю довольно простой пример, чтобы узнать, как использовать ocaml как императивный язык. Моя догадка я перепутались с запятой, но я не могу найти какие-либо ошибки в кодеСортировка массива Imperative ocaml
let sort array =
for index = 0 to (Array.length array -1) do
let boole = ref false;
let pos = ref index;
let max = ref array.(index);
let p = ref !pos;
let m = ref !max;
while !pos <> (Array.lenght array -1) do
if array.(!pos) > !max then begin
max := array(!pos);
boole := true;
p := !pos
end
pos := !pos + 1
done;
if (!boole = true) then begin
array.(index) <- max;
array.(pos) <- m
end
done ;;
Спасибо.
Edit 1:
В случае, если кто попадается этот вопрос, я отправляю правильный код вызвать выше, не сортирует массив правильно, даже с правильным синтаксисом:
let sort array =
for index = 0 to (Array.length array -1) do
let boole = ref false in
let pos = ref index in
let max = ref array.(index) in
let p = ref !pos in
let m = ref !max in
for i = !pos to (Array.length array -1) do
if (array.(i) > !max) then begin
pos :=i;
max := array.(!pos);
boole := true;
end;
done;
if (!boole = true) then begin
array.(!pos) <- !m;
array.(!p) <- !max;
end;
done ;;
вопрос: почему бы не использовать bubblesort algo? На первый взгляд, я не понимаю алго, которое вы используете. –
@JoeGob Я просто возился с императивным программированием в ocaml, я не искал лучшего алгоритма –