Mergesort-归并排序
2011-11-25 11:26
197 查看
#include<iostream>
using namespace std;
void Merge(intr[],int r1[],int s,int m,int t)
{
inti=s;
intj=m+1;
intk=s;
while(i<=m&&j<=t){
if(r[i]<=r[j]) r1[k++]=r[i++];
elser1[k++]=r[j++];
}
if(i<=m)
while(i<=m)r1[k++]=r[i++];
else
while(j<=t)r1[k++]=r[j++];
for(intl=s;l<=t;l++)
r[l]=r1[l];
}
void MergeSort(intr[],int r1[],int s,int t)
{
if(s==t)r1[s]=r[s];
else{
intm=(s+t)/2;
MergeSort(r,r1,s,m);
MergeSort(r,r1,m+1,t);
Merge(r1,r,s,m,t);
}
}
int main()
{
intr[8]={10,3,5,1,9,34,54,565},r1[8];
MergeSort(r,r1,0,7);
for(intq=0;q<8;q++)
cout<<""<<r[q];
return1;
}
using namespace std;
void Merge(intr[],int r1[],int s,int m,int t)
{
inti=s;
intj=m+1;
intk=s;
while(i<=m&&j<=t){
if(r[i]<=r[j]) r1[k++]=r[i++];
elser1[k++]=r[j++];
}
if(i<=m)
while(i<=m)r1[k++]=r[i++];
else
while(j<=t)r1[k++]=r[j++];
for(intl=s;l<=t;l++)
r[l]=r1[l];
}
void MergeSort(intr[],int r1[],int s,int t)
{
if(s==t)r1[s]=r[s];
else{
intm=(s+t)/2;
MergeSort(r,r1,s,m);
MergeSort(r,r1,m+1,t);
Merge(r1,r,s,m,t);
}
}
int main()
{
intr[8]={10,3,5,1,9,34,54,565},r1[8];
MergeSort(r,r1,0,7);
for(intq=0;q<8;q++)
cout<<""<<r[q];
return1;
}
相关文章推荐
- 归并排序(1)MergeSort顺序实现之非递归预分配内存
- 排序算法详解【归并排序-Merge_Sort】
- 【算法导论】2-2 二路归并排序(分治)merge-sort 和逆序对的问题
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现
- 结合归并排序和插入排序 Merge with Insertion Sort
- 【每日一题(28)】高等排序算法(2) 归并排序(MergeSort)
- 归并排序(merge sort)算法实现
- 归并排序(merge sort)c++实现
- 无聊写排序之 ---- 归并排序(MergeSort) 非递归实现
- 归并排序(Mergesort)之Java实现
- 归并排序(MergeSort)Java实现
- 归并排序(Mergesort)之Java实现
- 排序算法详解【归并排序-Merge_Sort】
- 排序算法详解【归并排序-Merge_Sort】
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现
- 归并排序(merge sort)的一个基于模板的实现
- 归并排序(Merge Sort)
- 归并排序 Merge sort
- 归并排序(Merge Sort)
- 排序算法(二)—归并排序(Merge sort)