Method: WirisPlugin::Arrays.partition

Defined in:
lib/com/wiris/util/type/Arrays.rb

.partition(elements, lower, higher, comparator) ⇒ Object



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