##質問
アルゴリズムを勉強していてマージソートのコードを書いてみたのですが実行結果がうまくいかずどこが間違っているのかわからないため教えていただきたいです。
##コード
c言語
1#include <string.h> 2#include <stdio.h> 3 4void marg (int A[], int left, int right); 5 6int main (void) { 7int i, right, left; 8int A[]={6,4,3,7,5,1,2}; 9 10right=(sizeof(A)/sizeof(int))-1; 11left=0; 12 13marg(A,left,right); 14 15for (i=0;i<=right;i++) { 16printf ("%d ",A[i]); 17} 18 19return 0; 20} 21 22void marg (int A[], int left, int right) { 23int mid,i,j,k; 24int temp[50]; 25 26if (left>=right) { 27return; 28} 29 30mid=(right+left)/2; 31 32marg (A,left,mid); 33marg (A,mid+1,right); 34 35 36for (i=left;i<=mid;i++) { 37temp[i]=A[i]; 38} 39for (j=right,i=mid+1;i<=mid+1;i++,j--) { 40temp[i]=A[j]; 41} 42 43i=left; 44j=right; 45for (k=left;k<=right;k++) { 46if (temp[i]<temp[j]) { 47A[k]=temp[i]; 48i++; 49} else if (temp[i]>temp[j]) { 50A[k]=temp[j]; 51j--; 52} 53} 54 55}
##実行結果
1 4 4 7 2 1 2
回答3件
あなたの回答
tips
プレビュー