归并排序归并排序
实验[2]
[实验题目]:归并排序
专业:信息与计算数学 学号: 姓名: 日期: 1 实验目的
学习归并排序算法的算法思想,并将其运用在计算机程序中 。 2 实验内容
首先学习归并排序算法的思想
然后运用归并排序算法的思想进行程序编译
3 算法设计
首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个
数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,
那直接将另一个数列的数据依次取出即可。
4 程序代码
#include //调用setw ...
归并排序
实验[2]
[实验题目]:归并排序
专业:信息与计算数学 学号: 姓名: 日期: 1 实验目的
学习归并排序算法的算法
,并将其运用在计算机程序中 。 2 实验内容
首先学习归并排序算法的思想
然后运用归并排序算法的思想进行程序编译
3 算法设计
首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个
数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,
那直接将另一个数列的数据依次取出即可。
4 程序代码
#include
//调用setw
#include //将b[0]至b[right-left+1]拷贝到a[left]至a[right] template
void Copy(T a[],T b[],int left,int right)
{
int size=right-left+1; for(int i=0;i
void Merge(T a[],T b[],int left,int i,int right)
{
int a1cout=left,//指向第一个数组开头
a1end=i,//指向第一个数组结尾
a2cout=i+1,//指向第二个数组开头
a2end=right,//指向第二个数组结尾
bcout=0;//指向b中的元素
for(int j=0;ja1end)
{b[bcout++]=a[a2cout++];
continue;
}
//如果第一个数组结束,拷贝第二个数组的元素到b if(a2cout>a2end)
{b[bcout++]=a[a1cout++]; continue;
}
//如果第二个数组结束,拷贝第一个数组的元素到b if(a[a1cout]
void MergeSort(T a[],int left,int right)
{
T *b=new int[right-left+1]; if(left>n;
int *a=new int[n];
cout<<"请输入相应的数字:";
for(int i=0;i>a[i];}
MergeSort( a, 0, n-1); cout<<"排序结果: ";
for(int j=0;j
本文档为【归并排序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。