算法分析与设计实验报告-合并排序、快速排序文档格式.doc

上传人:wj 文档编号:843367 上传时间:2023-04-29 格式:DOC 页数:3 大小:48.50KB
下载 相关 举报
算法分析与设计实验报告-合并排序、快速排序文档格式.doc_第1页
第1页 / 共3页
算法分析与设计实验报告-合并排序、快速排序文档格式.doc_第2页
第2页 / 共3页
算法分析与设计实验报告-合并排序、快速排序文档格式.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

算法分析与设计实验报告-合并排序、快速排序文档格式.doc

《算法分析与设计实验报告-合并排序、快速排序文档格式.doc》由会员分享,可在线阅读,更多相关《算法分析与设计实验报告-合并排序、快速排序文档格式.doc(3页珍藏版)》请在冰点文库上搜索。

算法分析与设计实验报告-合并排序、快速排序文档格式.doc

#include<

iomanip.h>

//调用setw

iostream.h>

//将b[0]至b[right-left+1]拷贝到a[left]至a[right]

template<

classT>

voidCopy(Ta[],Tb[],intleft,intright)

{intsize=right-left+1;

for(inti=0;

i<

size;

i++)

{

a[left++]=b[i];

}

}//合并有序数组a[left:

i],a[i+1:

right]到b,得到新的有序数组b

voidMerge(Ta[],Tb[],intleft,inti,intright)

{inta1cout=left,//指向第一个数组开头

a1end=i,//指向第一个数组结尾

a2cout=i+1,//指向第二个数组开头

a2end=right,//指向第二个数组结尾

bcout=0;

//指向b中的元素

for(intj=0;

j<

right-left+1;

j++)//执行right-left+1次循环

{if(a1cout>

a1end)

{b[bcout++]=a[a2cout++];

continue;

}//如果第一个数组结束,拷贝第二个数组的元素到b

if(a2cout>

a2end)

{

b[bcout++]=a[a1cout++];

continue;

}//如果第二个数组结束,拷贝第一个数组的元素到b

if(a[a1cout]<

a[a2cout])

{b[bcout++]=a[a1cout++];

continue;

}//如果两个数组都没结束,比较元素大小,把较小的放入b

else

{b[bcout++]=a[a2cout++];

continue;

}}}//对数组a[left:

right]进行合并排序

voidMergeSort(Ta[],intleft,intright)

{T*b=new

int[right-left+1];

if(left<

right)

{

inti=(left+right)/2;

//取中点

MergeSort(a,left,i);

//左半边进行合并排序

MergeSort(a,i+1,right);

//右半边进行合并排序

Merge(a,b,left,i,right);

//左右合并到b中

Copy(a,b,left,right);

//从b拷贝回来

}

}

intmain()

{intn;

cout<

<

"

请输入您将要排序的数目:

;

cin>

>

n;

int*a=newint[n];

请输入相应的数字:

for(inti=0;

{cin>

a[i];

}

MergeSort(a,0,n-1);

cout<

排序结果:

for(intj=0;

j++)

{cout<

setw(5)<

a[j];

}

cout<

endl;

return1;

(2)快速排序源代码如下:

#defineMAX10

intQuickSort(inta[],intl,intr)

{

intpivot;

//枢轴

inti=l;

intj=r;

inttmp;

pivot=a[(l+r)/2];

//取数组中间的数为枢轴

do{

while(a[i]<

pivot)i++;

//i右移

while(a[j]>

pivot)j--;

//j左移

if(i<

=j)

{

tmp=a[i];

a[i]=a[j];

a[j]=tmp;

//交换a[i]和a[j]

i++;

j--;

}

}while(i<

=j);

if(l<

j)QuickSort(a,l,j);

if(i<

r)QuickSort(a,i,r);

return1;

}

intmain()

intarray[MAX];

inti;

cout<

请输入"

MAX<

个整数:

for(i=0;

MAX;

i++)

cin>

array[i];

QuickSort(array,0,MAX-1);

cout<

快速排序后:

cout<

array[i]<

"

return0;

四.实验结果

五.总结与思考

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2