您的位置:首页 > 职场人生

排序算法之归并排序

2016-07-16 20:10 190 查看
归并排序:

  排序类别  
  排序方法  
时间复杂度
  空间复杂度  
  稳定性  
  平均情况  
  最坏情况  
  最好情况  
归并排序
归并排序
O(nlog2n)
O(nlog2n)
O(nlog2n)
O(n)
稳定
代码:

#include <iostream>
#include <cstdio>

using namespace std;

void Merge(int Array[], int start, int mid, int end)
{
int i = start;
int j = mid + 1;
int k = 0;
int temp[end - start + 1];

while(i <= mid && j <= end){
if(Array[i] <= Array[j]){
temp[k++] = Array[i++];
}
else{
temp[k++] = Array[j++];
}
}
while(i <= mid){
temp[k++] = Array[i++];
}
while(j <= end){
temp[k++] = Array[j++];
}
for(int i = 0; i < k; i++){
Array[start+i] = temp[i];
}
}

void MergeSort(int Array[], int start, int end)
{
if(start >= end){
return ;
}
int mid = (start + end) >> 1;
MergeSort(Array, start, mid);
MergeSort(Array, mid+1, end);
Merge(Array, start, mid, end);

}

int main()
{
int a[] = {1,3,6,5,9,2,8,7,0,4};

MergeSort(a, 0, 9);

for(int i = 0; i < 10; i++){
cout << a[i] << " ";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息