java归并合并的区别,二路归并排序(也叫合并排序)

二路归并排序(也叫合并排序)

下面这图展示了二路归并的过程

c356cf23b23ed1e57e9200f71fff6afc.png

二路归并的核心代码是merge()函数喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+y/y9qzK49rfWuO61xMr91+nT0NDytcS6z7Ki1NrSu8bwPC9wPgo8cD7I5828o7o8L3A+CjxwPtTayv3X6UHW0KOsPC9wPgo8cD6003C1vXHKx9K7uPbK/dfpo6y003G1vXLKx8HtzeLSu7j2yv3X6TwvcD4KPHA+xMfDtMjnus69q9XiMrj2yv3X6dPQ0PK1xLrPsqLU2tK7xvCjrNfpuPbQwrXEyv3X6UHE2KO/PC9wPgo8cD6yvdboo7o8L3A+CjxwPrXa0ruyvaO6v6qx2dK7uPbK/dfpTKOstOa3xXC1vXHWrrzko6jSsr7NysfQ6NKquemyorXE1/Ox38r91+mjqbXE1KrL2DwvcD4KPHA+tdq2/rK/o7q/qrHZ0ru49sr91+lSo6y05rfFcbW9ctauvOSjqNKyvs3Kx9Do0qq56bKitcTT0rHfyv3X6aOptcTUqsvYPC9wPgo8cD612sj9sr2jujK49sr91+m1xNfuuvO7udKqvNPSu7j2zt7H7rTztcTK/aOov8nS1NPDMHg3RkZGse3KvqOpo6zS8rTLv6qx2bXEyv3X6b/VvOTSqrbgMdfWt/u49r/VvOQ8L3A+CjxwPrXay8SyvaO6TNPrUtbQtcTK/dfW1vC49rHIvc+jrLDRvc/QobXEz8i3xdTayv3X6UHW0KOotNPK/dfpQaG+MKG/v6rKvLTmt8WjrNLAtM7N+brzuLK4x9StwLS1xMr9o6mjrMi7uvO9z9ChtcTK/dfp1rjV6835uvPSxravo6zWuM/yz8LSu8671Nm6zcHtzeLSu7j2yv3X6bHIvc88L3A+CjxwPjxicj4KPC9wPgo8cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140929/20140929091830263.jpg" alt="\">

//第一个参数为需要排序的数组,第2个参数为分割的第一个数组开始元素的下标

//第3个参数为分割的第一个数组的最后1个元素的下标

//第4个参数为数组最后1个元素的下标

void Merge(int *A,int p,int q,int r)

{

int n1,n2,i,j,k,g;

n1=q-p+1;

n2=r-q;

int *L,*R;

L=(int *)malloc(sizeof(int)*(n1+1));

R=(int *)malloc(sizeof(int)*(n2+1));

L[n1]=0x7fff; //开辟的左右2个数组最后1个数设置为最大值

R[n2]=0x7fff;

g=0;

for(i=p;i<=q;i++)

{

L[g]=A[i];

g++;

}

g=0;

for(i=q+1;i<=r;i++)

{

R[g]=A[i];

g++;

}

//逐个比较左右两组数组,把较小的值写入原来的数组

j=k=0;

for(i=p;i<=r;i++)

{

if(L[j]完整代码:

#includeusing namespace std;

//第一个参数为需要排序的数组,第2个参数为分割的第一个数组开始元素的下标

//第3个参数为分割的第一个数组的最后1个元素的下标

//第4个参数为数组最后1个元素的下标

void Merge(int *A,int p,int q,int r)

{

int n1,n2,i,j,k,g;

n1=q-p+1;

n2=r-q;

int *L,*R;

L=(int *)malloc(sizeof(int)*(n1+1));

R=(int *)malloc(sizeof(int)*(n2+1));

L[n1]=0x7fff; //开辟的左右2个数组最后1个数设置为最大值

R[n2]=0x7fff;

g=0;

for(i=p;i<=q;i++)

{

L[g]=A[i];

g++;

}

g=0;

for(i=q+1;i<=r;i++)

{

R[g]=A[i];

g++;

}

//逐个比较左右两组数组,把较小的值写入原来的数组

j=k=0;

for(i=p;i<=r;i++)

{

if(L[j]http://www.dengb.com/Javabc/887439.htmlwww.dengb.comtruehttp://www.dengb.com/Javabc/887439.htmlTechArticle二路归并排序(也叫合并排序) 下面这图展示了二路归并的过程 二路归并的核心代码是merge()函数 vcD4KPHA+y/y9qzK49rfWuO61xMr91+nT0NDytcS6z7Ki1...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值