當前位置:編程學習大全網 - 編程軟體 - 急啊!求C語言編程高手!“將有序數列A、B合並為有序數列C算法的設計與實現 ”

急啊!求C語言編程高手!“將有序數列A、B合並為有序數列C算法的設計與實現 ”

剛寫好的代碼,VC下編譯通過。合並排序法的關鍵步驟實現。

#include?<stdio.h>

#include?<stdlib.h>

void?merge(int?A[],?int?B[],?int?C[],?int?n1,?int?n2){

int?i?=?0;

int?j?=?0;

int?k?=?0;

int?pA?=?0,?pB?=?0;

for(k=0;?k<n1+n2;?k++){

if(pA==1?&&?pB==0){

C[k]?=?B[j];

j++;

}

else?if(pA==0?&&?pB==1){

C[k]?=?A[i];

i++;

}

else?if(pA==0?&&?pB==0){

if(A[i]<B[j]){

C[k]?=?A[i];

i++;

if(i>=n1)

pA?=?1;

}

else{

C[k]?=?B[j];

j++;

if(j>=n2)

pB?=?1;

}

}

}

}

void?main(){

int?n1,?n2;

int?*A,?*B,?*C;

int?i;

printf("輸入n1:?");

scanf("%d",?&n1);

A?=?(int*)malloc(sizeof(int)*n1);

printf("從小到大輸入%d個整數:?\n",?n1);

for(i=0;?i<n1;?i++){

printf("A[%d]?=?",?i);

scanf("%d",?&A[i]);

}

printf("輸入n2:?");

scanf("%d",?&n2);

B?=?(int*)malloc(sizeof(int)*n2);

printf("從小到大輸入%d個整數:?\n",?n2);

for(i=0;?i<n2;?i++){

printf("B[%d]?=?",?i);

scanf("%d",?&B[i]);

}

C?=?(int*)malloc(sizeof(int)*(n1+n2));

printf("A:?");

for(i=0;?i<n1;?i++)

printf("%d?",?A[i]);

printf("\n");

printf("B:?");

for(i=0;?i<n2;?i++)

printf("%d?",?B[i]);

printf("\n");

merge(A,?B,?C,?n1,?n2);

printf("調用merge()函數對A和B進行合並,結果保存在C...\n");

printf("合並後的C:?");

for(i=0;?i<n1+n2;?i++)

printf("%d?",?C[i]);

printf("\n");

free(A);

free(B);

free(C);

}

  • 上一篇:CAD三維教程
  • 下一篇:大疆 spark遙控器上,暫停按鈕和FN是幹啥用的
  • copyright 2024編程學習大全網