The basic step of sorting an array are as follows:
- Select a pivot, normally the middle one
- From both ends, swap elements and make left elements < pivot and all right > pivot
- Recursively sort left part and right part
思路:取了pivot之后,把小的放左边,大的放右边,实现方法就是遇见左大右小的,swap就可以了。然后再recursive sort 左右两边。
public class Solution {
/**
* @param A: an integer array
* @return: nothing
*/
public void sortIntegers2(int[] A) {
if(A == null || A.length == 0) {
return;
}
quickSort(A, 0, A.length -1);
}
private void quickSort(int[] A, int start, int end) {
if(start >= end) {
return;
}
int pivot = A[start + (end-start) /2];
int i = start; int j = end;
while(i <= j) {
while( i <= j && A[i] < pivot) {
i++;
}
while( i <= j && A[j] > pivot) {
j--;
}
if(i <= j) {
int temp = A[i];
A[i] = A[j];
A[j] = temp;
i++;
j--;
}
}
quickSort(A, start, j);
quickSort(A, i, end);
}
}