Sorting algorithms/Quicksort: Difference between revisions
Content added Content deleted
(Added Eiffel version) |
(→{{header|Eiffel}}: Added contracts, general cleanup) |
||
Line 1,038:
quicksort (list: ARRAY [COMPARABLE]): ARRAY [COMPARABLE]
require
not_void: list /= Void
local
less_a: ARRAY [COMPARABLE]
Line 1,043 ⟶ 1,045:
more_a: ARRAY [COMPARABLE]
temp: ARRAY [COMPARABLE]
pivot: COMPARABLE
i: INTEGER
Line 1,050 ⟶ 1,051:
create more_a.make_empty
create equal_a.make_empty
create
if list.count <= 1 then
Result := list
else
pivot := list [list.lower]
less_a.count + equal_a.count + more_a.count <= list.count
loop
if
less_a.force (
elseif
equal_a.force (
elseif
more_a.force (
end
end
temp := quicksort (less_a)
across
temp as t
loop
end
across
equal_a as eq
loop
end
temp := quicksort (more_a)
across
temp as t
loop
end
Result :=
end
ensure
same_size: list.count = Result.count
end
|