快速排序
public static void quickSort3(int[] a,int left,int right){
if (left >= right) return;
int l = left;
int r = right;
int flagItem = a[left];
while (left < right){
while (left < right && a[right] >= flagItem) {
right --;
}
a[left] = a[right];
while (left < right && a[left] <= flagItem) {
left ++;
}
a[right] = a[left];
}
a[left] = flagItem;
quickSort3(a,l,left-1);
quickSort3(a,left + 1,r);
}
快速排序
public static void quickSort2(int[] a,int left,int right){
if (left >= right) return;
int l = left;
int r = right;
int flagIndex = left;
int flagItem = a[flagIndex];
int insertIndex = flagIndex;
while (left < right){
while (left < right && a[right] > flagItem) {
right --;
}
while (left < right && a[left] < flagItem) {
left ++;
}
if (right > insertIndex){
a[insertIndex] = a[right];
}
if (left < right){
a[right] = a[left];
}
insertIndex = left;
}
a[insertIndex] = flagItem;
quickSort2(a,l,insertIndex -1 );
quickSort2(a,insertIndex + 1,r);
}