描述
给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。
java code
public class Solution {
/**
* @param A an integer array
* @return void
*/
public void sortIntegers2(int[] A) {
// Write your code here
quick_sort(A, 0, A.length - 1);
}
public int position(int[] A, int start, int end) {
int i = start, j = end;
int povit = A[start];
while(i < j) {
while(i<j && A[j] >= povit) {
j--;
}
if(i<j) {
A[i] = A[j];
}
while(i<j && A[i] <= povit) {
i++;
}
if(i<j) {
A[j] = A[i];
}
}
A[i] = povit;
return i;
}
public void quick_sort(int[] A, int start, int end) {
if(start < end) {
int mid = position(A, start, end);
quick_sort(A, start, mid - 1);
quick_sort(A, mid + 1, end);
}
}
}
注意
使用>= 和 <= 比 > 和 < 更节省时间