ALDS1_6-B Partitionを解く話
クイックソートで使うPartitionを実装する.
特徴
・閾値で分けるだけなので全体はソートされない.
アルゴリズム
- Partition(A, l, r)
- threshold = A[r]
- i = l - 1
- for j = l to r - 1
- if A[j] <= threshold
- i = i + 1
- exchange(A[j], A[i])
- i++
- exchange(A[i], A[r])
- return i
計算量
最悪ケースではjが増えるたびに交換するので .
実装
gist6642213dcdfec5d8dbf6d23f0436e01b