lintcode-464-整数排序 II
464-整数排序 II
给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。
样例
给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。
标签
排序 快速排序 归并排序
思路
使用快速排序
code
class Solution {
public:
/**
* @param A an integer array
* @return void
*/
void sortIntegers2(vector<int>& A) {
// Write your code here
int size = A.size();
if (size <= 1) {
return;
}
quitSort(A, 0, size - 1);
}
void quitSort(vector<int> &A, int left, int right) {
if (left < right) {
int i = left, j = right, x = A[i];
while (i < j) {
while (i < j && A[j] >= x) {
j--;
}
if (i < j) {
A[i] = A[j];
i++;
}
while (i < j && A[i] < x) {
i++;
}
if (i < j) {
A[j] = A[i];
j--;
}
}
A[i] = x;
quitSort(A, left, i - 1);
quitSort(A, i + 1, right);
}
}
};