174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
|
# File 'lib/com/wiris/util/type/Arrays.rb', line 174
def self.partition(elements, lower, higher, comparator)
pivot = elements::_(higher)
i = lower - 1
j = lower
while j < higher
if comparator::compare(pivot,elements::_(j)) > 0
i+=1
if i != j
swapper = elements::_(i)
elements::_(i,elements::_(j))
elements::_(j,swapper)
end
end
j+=1
end
if comparator::compare(elements::_(i + 1),elements::_(higher)) > 0
finalSwap = elements::_(i + 1)
elements::_(i + 1,elements::_(higher))
elements::_(higher,finalSwap)
end
return i + 1
end
|