提示
LintCode中的相关算法题实现代码,可以在我的GitHub中下载。
题目需求
给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。
样例
给出 [3, 2, 1, 4, 5]
, 排序后的结果为 [1, 2, 3, 4, 5]
。
解题思路
考察基本算法。
实现代码
class Solution {
public:
/**
* @param A: an integer array
* @return: nothing
*/
void sortHelper(vector<int> &A,int low,int high)
{
if(low>=high) return;
int first=low;
int second=high;
int target=A[first];
while(first<second)
{
while(first<second&&A[second]>=target)
{
second--;
}
A[first]=A[second];
while(first<second&&A[first]<=target)
{
first++;
}
A[second]=A[first];
}
A[first]=target;
sortHelper(A,low,first-1);
sortHelper(A,first+1,high);
}
void sortIntegers2(vector<int> &A) {
// write your code here
sortHelper(A,0,A.size()-1);
}
};