Lomuto Partition Scheme
from クイックソートのパーティションアルゴリズム
最後の要素をピボットとして利用する
偏ったデータ(整列済みデータとか)でパフォーマンスが悪化する
変数 i で、ピボットより小さい要素の最後のインデックスを追跡(lowの位置がスタート地点)
手続きのいちばん最後に、このiが指し示す値のすぐ後ろにピボットの値が入る
部分配列を走査し、入れ替えが発生するごとにiを増やす
code:c
int partition_lomuto(int *ar, int low, int high) {
int pivot = arhigh;
int i = low - 1;
for (int j = low; j < high; ++j) {
if (arj <= pivot) {
++i;
SWAP(ari, arj);
}
}
SWAP(ari+1, arhigh);
return i + 1;
}