首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

归拢算法

2012-11-01 
归并算法归并算法已经知道 但是伪代码要怎么改写成程序语言,才能能够在vc上运行 例如MERGE(A,p,q,r)n1←q-p

归并算法
归并算法已经知道 但是伪代码要怎么改写成程序语言,才能能够在vc上运行 例如
  MERGE(A,p,q,r) 
  n1←q-p+1;
  n2←r-q;
  create arrays L[1...n1+1]and R[1...n2+1]
  for i←1to n1
  do L[i]←A[p+i-1]
  for j←1to n2
  do R[j]←A[q+j]
  L[n1+1]←∞
  R[n2+1]←∞
  i←1
  j←1
  for k←p to r
  do if L[i]<R[j]
  then A[k]←L[i]
  i←i+1
  else A[k]←R[j]
  j←j+1
 下边是我写的代码但出现错误了 请高手指教
#include<stdio.h>
main()
{
int a[20]={1,2,2,3,6,45,4,8,9,7,4,5,6,9,4,7,2,31,32,40};
int L[10],R[10],i,j,k;
int m,n,p=0,q=9,r=19;
  m=q-p+1;
n=r-q;
for(i=0;i<m;i++)
L[i]=a[p+i];
for(j=0;j<n;j++)
R[j]=a[q+j+1];
i=j=0;
for(k=p;k<=r;k++)

{if(L[i]<R[j]) {a[k]=L[i];
i++;}
else {a[k]=R[j];
j++;}
printf("%d ",a[k]);
}
   
}


[解决办法]
http://topic.csdn.net/u/20121010/17/ce8719f9-ddcf-4c2c-90b8-e14139304f46.html
[解决办法]
http://topic.csdn.net/u/20121010/17/ce8719f9-ddcf-4c2c-90b8-e14139304f46.html请看下
[解决办法]
LZ最好自己写下,自己写和看别人的代码完全是两回事。

C/C++ code
#include<stdio.h>#include<stdlib.h>#include<limits.h>#include<malloc.h>void merge_sort(int*,int);void merge(int*,int);int main(){    int a[20]={1,2,2,3,6,45,4,8,9,7,4,5,6,9,4,7,2,31,32,40};    register int i;    merge_sort(a,20);    for(i=0;i<20;i++)        printf("%4d\t",a[i]);    printf("\n");    system("pause");    return(0);}void merge_sort(int *a,int n){    if(n>1)    {        merge_sort(a,n/2);        merge_sort(a+n/2,n-n/2);        merge(a,n);    }}void merge(int *a,int n){    int mid=n/2,*lp,*rp;    int *l=(int*)malloc((mid+1)*sizeof(int)),*r=(int*)malloc((n-mid+1)*sizeof(int));    register int i;    lp=l,rp=r;    for(i=0;i<mid;i++)        l[i]=a[i];    l[i]=INT_MAX;    for(;i<n;i++)        r[i-mid]=a[i];    r[i-mid]=INT_MAX;    for(i=0;i<n;i++)        if(*lp<*rp)            *a++=*lp++;        else            *a++=*rp++;    free(l);    free(r);} 

热点排行