概念
排序过程中的小细节
具体的 partition 的方法
partitionMethodA
partitionMethodB
代码参考
private static int partitionMethodA(long[] array, int from, int to) {
long pivot = array[to];
int left = from;
int right = to;
while (left < right) {
while (left < right && array[left] <= pivot) {
left++;
}
while (left < right && array[right] >= pivot) {
right--;
}
long t = array[left];
array[left] = array[right];
array[right] = t;
}
long t = array[to];
array[to] = array[left];
array[left] = t;
return left;
}
private static int partitionMethodB(long[] array, int from, int to) {
long pivot = array[to];
int left = from;
int right = to;
while (left < right) {
while (left < right && array[left] <= pivot) {
right--;
}
array[right] = array[left];
while (left < right && array[right] >= pivot) {
left++;
}
array[left] = array[right];
}
array[left] = pivot;
return left;
}