给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。
样例:
给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。
#ifndef C464_H
#define C464_H
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
/*
* @param A: an integer array
* @return:
*/
void sortIntegers2(vector<int> &A) {
// write your code here
if (A.empty())
return;
int len = A.size();
quickSort(A,0,len-1);
}
void quickSort(vector<int> &A, int left, int right)
{
if (left < right)
{
int low = left;
int high = right;
int key = A[low];
while (low < high)
{
while (low < high&&A[high] >= key)
--high;
if (low < high)
A[low++] = A[high];
while (low < high&&A[low] < key)
++low;
if (low < high)
A[high--] = A[low];
}
A[low] = key;
quickSort(A, left, low - 1);
quickSort(A, low + 1, right);
}
}
};
#endif