#快排
在实际中,快排算法被证明是效率最高的对比算法 (Comparison Sort)。最好情况和 merge sort 一样,达到 Θ(nlgn)。最差是 Θ(n2)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def quicksort(inputs, lo, hi)
if (lo < hi)
mi = partition inputs, lo, hi
quicksort inputs, lo, mi-1
quicksort inputs, mi+1, hi
end
end
def partition(inputs, lo, hi)
key = inputs[hi]
mi, unsort = lo - 1, lo
lo.upto(hi-1) do |i|
if inputs[i] <= key
mi += 1
new_value = inputs[i]
inputs[i] = inputs[mi]
inputs[mi] = new_value
end
unsort += 1
end
inputs[hi] = inputs[mi+1]
inputs[mi+1] = key
mi + 1
end