算法导论 插入排序和合并排序
2014-02-26 14:10
225 查看
插入排序:
#include <iostream>
using namespace std;
int main()
{
intNum=50;
inti,j,key;
int*A=newint[Num];
for(j=0;j<Num;j++)
A[j]=rand()0;
for(j=1;j<Num;j++)
{
key=A[j];
i=j-1;
while(i>-1&&A[i]>key)
{
A[i+1]=A[i];
i=i-1;
}
A[i+1]=key;
}
for(j=0;j<Num;j++)
cout<<A[j]<<"\t";
delete[] A;
return0;
}
合并排序:
#include<iostream>
using namespace std;
bool merge(int
*A,int p,int
q,int r)
{
intn1=q-p+1;
intn2=r-q;
int*L=newint[n1];
int*R=newint[n2];
inti,j,k;
for(i=0;i<n1;i++)
L[i]=A[p+i];
for(i=0;i<n2;i++)
R[i]=A[q+i+1];
i=0;j=0;
//注意此处的要均为,注意和算法的区别!
for(k=p;k<r+1;k++)
{
if(i==n1)
//当数组L已排完后则将R数组直接复制到A数组
{
A[k]=R[j++];
continue;
}
if(j==n2)
//当数组R已排完后则将L数组直接复制到A数组
{
A[k]=L[i++];
continue;
}
if(L[i]<=R[j])
{
A[k]=L[i];
i++;
}
else
{
A[k]=R[j];
j++;
}
}
returntrue;
}
bool merge_sort(int *A,int
p,int r)
{
intq;
if(p<r)
{
q=(p+r)/2;
merge_sort(A,p,q);
merge_sort(A,q+1,r);
merge(A,p,q,r);
}
returntrue;
}
int main()
{
intNum=50;
inti;
int*A=newint[Num];
for(i=0;i<Num;i++)
A[i]=rand()0;
merge_sort(A,0,Num-1);
for(i=0;i<Num;i++)
cout<<A[i]<<"\t";
return0;
}
#include <iostream>
using namespace std;
int main()
{
intNum=50;
inti,j,key;
int*A=newint[Num];
for(j=0;j<Num;j++)
A[j]=rand()0;
for(j=1;j<Num;j++)
{
key=A[j];
i=j-1;
while(i>-1&&A[i]>key)
{
A[i+1]=A[i];
i=i-1;
}
A[i+1]=key;
}
for(j=0;j<Num;j++)
cout<<A[j]<<"\t";
delete[] A;
return0;
}
合并排序:
#include<iostream>
using namespace std;
bool merge(int
*A,int p,int
q,int r)
{
intn1=q-p+1;
intn2=r-q;
int*L=newint[n1];
int*R=newint[n2];
inti,j,k;
for(i=0;i<n1;i++)
L[i]=A[p+i];
for(i=0;i<n2;i++)
R[i]=A[q+i+1];
i=0;j=0;
//注意此处的要均为,注意和算法的区别!
for(k=p;k<r+1;k++)
{
if(i==n1)
//当数组L已排完后则将R数组直接复制到A数组
{
A[k]=R[j++];
continue;
}
if(j==n2)
//当数组R已排完后则将L数组直接复制到A数组
{
A[k]=L[i++];
continue;
}
if(L[i]<=R[j])
{
A[k]=L[i];
i++;
}
else
{
A[k]=R[j];
j++;
}
}
returntrue;
}
bool merge_sort(int *A,int
p,int r)
{
intq;
if(p<r)
{
q=(p+r)/2;
merge_sort(A,p,q);
merge_sort(A,q+1,r);
merge(A,p,q,r);
}
returntrue;
}
int main()
{
intNum=50;
inti;
int*A=newint[Num];
for(i=0;i<Num;i++)
A[i]=rand()0;
merge_sort(A,0,Num-1);
for(i=0;i<Num;i++)
cout<<A[i]<<"\t";
return0;
}
相关文章推荐
- Java排序算法&nbsp;插入排序
- iOS 插入排序
- ios点击链接直接跳转到 App&n…
- 动作RPG游戏-地牢猎手Dungeon&nbsp…
- (数据库篇) SQL查询~ 存…
- KnCMiner正式公开支持Bitcoin&nbsp…
- 收缩表alter table shrink space
- IOS开发之----strong和weak (…
- 谷歌商店Google Play St…
- yii framework(一)入口分析
- 美媒:IBM押宝比特币 开始测…
- PIX/ASA 防火墙PPPoe 拨号配置
- iOS SBJson解析,拼接的用法
- 宏基 ACER A500/501&nbs…
- arcengine 10 dll引用错误
- C++&nbsp;C#&nbsp;VC&nbsp;VC.net以及VC++有…
- linux setup yum 安装
- 旧金山“Satoshi Roundtable”…
- LOG日志时间与show clock时间…