没有合适的资源?快使用搜索试试~ 我知道了~
计算机算法设计与分析专业课程设计常规题目的C及C代码集.doc
2 下载量 19 浏览量
2022-12-15
22:13:30
上传
评论 2
收藏 140KB DOC 举报
温馨提示
试读
87页
计算机算法设计与分析专业课程设计常规题目的C及C代码集.doc
资源推荐
资源详情
资源评论
合并排序 1:
#include<iostream>
using namespace std;
const int N=100;
class list
{
public:
int array[N];
void input(int a);
void merge(int arrayc[],int arrayd[],int l,int m,int r);
void mergepass(int arrayx[],int arrayy[],int s);
void mergesort(int array1[]);
void diaplay(int a);
};
void list::input(int a)
{
cout<<"Please input shorted array:"<<endl;
for(int i=0;i<a;i++)
cin>>array[i];
}
void list::merge(int arrayc[],int arrayd[],int l,int m,int r)
{
int i=l;
int j=m+1;
int k=l;
while((i<=m)&&(j<=r))
if(arrayc[i]<=arrayc[j])
arrayd[k++]=arrayc[i++];
else arrayd[k++]=arrayc[j++];
if(i>m)
for(int q=j;q<=r;q++)
arrayd[k++]=arrayc[q];
else
for(int q=i;q<=m;q++)
arrayd[k++]=arrayc[q];
}
void list::mergepass(int arrayx[],int arrayy[],int s)
{
int i=0;
while(i<=N-2*s)
{
merge(arrayx,arrayy,i,i+s-1,i+2*s-1);
i=i+2*s;
}
if((i+s)<N)
merge(arrayx,arrayy,i,i+s-1,N-1);
else
for(int j=i;j<N;j++)
arrayy[j]=arrayx[j];
}
void list::mergesort(int array1[])
{
int array2[N];
int s=1;
while(s<N)
{
mergepass(array1,array2,s);
s+=s;
mergepass(array2,array1,s);
s+=s;
}
}
void list::diaplay(int a)
{
for(int i=N-a;i<N;i++)
cout<<array[i];
}
void main()
{
list f;
int a;
cout<<"请输入要合并排序数组大小:(数组最大上限 100)"<<endl;
cin>>a;
f.input(a);
f.mergesort (f.array);
f.diaplay (a);
}
合并排序:2
#include <iostream>
usingnamespace std;
void MERGES(int *A,int p,int q,int r) //下标 P<=q<r
{
int n1=q-p+1; //n1:p,q 之间数个数
int n2=r-q; //n2:q 以后到 r 数个数
int *L=newint [n1+1], //动态申请两个子数组
*R=newint [n2+1];
int i,j,k;
for (i=0;i<n1;i++)
{
L[i]=A[p+i-1];
}
for (j=0;j<n2;j++)
{
R[j]=A[q+j];
}
L[n1]=10000; //设置哨兵
R[n2]=10000;
i=0;
j=0;
for (k=p-1;k<r;k++)
{
if (L[i]<=R[j])
{
A[k]=L[i];
i=i+1;
}
else
{
A[k]=R[j];
j=j+1;
}
}
}
void MERGESORT(int *A,int p,int r)
{
if (p<r)
{
int q=(p+r)/2;
MERGESORT(A,p,q);
MERGESORT(A,q+1,r);
MERGES(A,p,q,r);
}
}
void main()
{
int x,z,p,r;
cout<<"请输入数组长度"<<endl;
cin>>x;
int *A= newint[x];
cout<<"请输入数组元素"<<endl;
for(int y=0;y<x;y++)
{
cin>>z;
A[y]=z;
}
cout<<"请输入上下限 p,r"<<endl;
cin>>p>>r;
MERGESORT(A,p,r);
cout<<"合并排序后为:"<<endl;
剩余86页未读,继续阅读
资源评论
zzzzl333
- 粉丝: 691
- 资源: 7万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 88-520告白(520气球).zip
- HTML+CSS+JS精品网页模板H126.rar
- n.cpp
- jdk-8u411-windows-x64下载安装可用
- vgg模型-图像分类算法对水果识别-不含数据集图片-含逐行注释和说明文档.zip
- KMP算法(Knuth-Morris-Pratt算法
- vgg模型-python语言pytorch框架训练识别化妆品分类-不含数据集图片-含逐行注释和说明文档.zip
- KMP算法(Knuth-Morris-Pratt算法
- shufflenet模型-基于人工智能的卷积网络训练识别狗的表情-不含数据集图片-含逐行注释和说明文档.zip
- EPIC Fantasy Town 1.0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功