static void mySort(int[] array, int lDatum, int rDatum) {
if (lDatum < rDatum) {
int lIndex = lDatum,rIndex = rDatum;
boolean flag = true;//true时 left <- right,false 时left -> right
while (lIndex < rIndex) {
while (array[lIndex] < array[rIndex]) {
if (flag) {
rIndex--;
} else {
lIndex++;
}
}
if (array[lIndex] >= array[rIndex]) {
int middle = array[lIndex];
array[lIndex] = array[rIndex];
array[rIndex] = middle;
if (flag) {
lIndex++;
flag = false;
} else {
rIndex--;
flag = true;
}
}
}
mySort(array, lDatum, lIndex - 1);
mySort(array, lIndex + 1, rDatum);
}
}
借鉴了 MoreWindows 的 白话经典算法系列之六 快速排序 快速搞定