Quickselect algorithm: Difference between revisions
→{{header|Mercury}}
Line 2,086:
=={{header|Mercury}}==
{{works with|Mercury|22.01.1}}
Line 2,266 ⟶ 2,261:
Print_kth_least = (pred(K::in, di, uo) is det -->
print_kth_least(K, example_numbers, M)),
print("With < as order predicate: ", !IO),
foldl(Print_kth_least, 1 `..` 10, !IO),▼
print_line("", !IO),
print_line("", !IO),▼
foldl(Print_kth_greatest, 1 `..` 10, !IO),
▲ foldl(Print_kth_least, 1 `..` 10, !IO),
print_line("", !IO).
:- pred print_kth_least(int::in, list(int)::in,▼
M::in, io::di, io::uo)▼
is det <= urandom(M, io).▼
print_kth_least(K, Numbers_list, M, !IO) :-▼
(array.from_list(Numbers_list, Arr0)),▼
quickselect(<, K - 1, Arr0, _, Elem, M, !IO),▼
print(Elem, !IO).
:- pred print_kth_greatest(int::in, list(int)::in,
Line 2,290 ⟶ 2,289:
quickselect(>, K - 1, Arr0, _, Elem, M, !IO),
print(Elem, !IO).
▲:- pred print_kth_least(int::in, list(int)::in,
▲ M::in, io::di, io::uo)
▲ is det <= urandom(M, io).
▲print_kth_least(K, Numbers_list, M, !IO) :-
▲ (array.from_list(Numbers_list, Arr0)),
▲ quickselect(<, K - 1, Arr0, _, Elem, M, !IO),
%%%-------------------------------------------------------------------
Line 2,308 ⟶ 2,301:
{{out}}
<pre>$ mmc quickselect_task.m && ./quickselect_task
With < as order predicate: 0 1 2 3 4 5 6 7 8 9
With > as order predicate: 9 8 7 6 5 4 3 2 1 0</pre>
=={{header|NetRexx}}==
|