class Solution {
public:
/**
* @param A an integer array
* @return void
*/
void sortIntegers2(vector<int>& A) {
// Write your code here
vector<int>temp(A.size(),0);
mergeSort(A,temp,0,A.size()-1);
}
void mergeSort(vector<int>& A,vector<int>& temp,int start,int end){
if (start>=end) {
return;
}
int mid = (start+end)/2;
mergeSort(A,temp,start,mid);
mergeSort(A,temp,mid+1,end);
merge(A,temp,start,mid,end);
}
void merge(vector<int>& A,vector<int>& temp,int start,int mid,int end) {
int i = start;
int j = mid+1;
int k = start;
while(i<=mid && j<=end) {
if(A[i]>A[j]) {
temp[k] = A[j++];
} else {
temp[k] = A[i++];
}
k++;
}
while(i<=mid){
temp[k++] = A[i++];
}
while(j<=end){
temp[k++] = A[j++];
}
for(int p = start;p<=end;p++){
A[p] = temp[p];
}
}
};
归并排序
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 选择排序 对于任何输入,时间为O(n*n); 冒泡排序 最优(对于升序的数组,因为加入了一个跳出判断):O(n),...
- 一般来说,这三者的时间复杂度O(NlogN),空间复杂度O(n)优化后,空间复杂度均可为O(1),如下文中的快排和...
- 转载:http://blog.csdn.net/pzhtpf/article/details/7559943 一、...