c言語です。 MergeSortと基本挿入法で回数と移動のプログラムです。 ビルド実行が出来たのですがタネを”1”を入力すると結果が出てきません。 延々と検索をしています。
c言語です。 MergeSortと基本挿入法で回数と移動のプログラムです。 ビルド実行が出来たのですがタネを”1”を入力すると結果が出てきません。 延々と検索をしています。 どこのミスか分かりますか? プログラムを全文記載できませんでしたので、写メで続きは乗せています。 #include<stdio.h> #include<stdlib.h> #define N 8 void GenerateRandomData(int seed,int range,int data[],int num); void InsertionSort(int x[],int n); void MergeSort(int x[], int min, int max, int tmp[]); int COMP; int MOVE; int main(void) { int data1[N],data2[N]; int tmp[N]; //マージソート作業用配列 int i,seed; printf("乱数のタネ入力:"); scanf("%d",&seed); GenerateRandomData(seed,N,data1,N); for(i=0;i<N;i++) data2[i]=data1[i]; printf("\n=基本挿入法=\n"); COMP=MOVE=0; InsertionSort(data1,N); printf("比較: %d 回, 移動: %d 回\n",COMP,MOVE); printf("\n=マージソート=\n"); COMP=MOVE=0; MergeSort(data2,0,N-1,tmp); printf("比較: %d 回 移 %d 回\n",COMP,MOVE); return 0; } void GenerateRandomData(int seed,int range,int data[],int num) { int i; srand(seed); for(i=0;i<num;i++){ data[i]=rand()%range+1; printf("%d\t ",data[i]); } printf("\n"); return ; } void InsertionSort(int x[],int n) { int i,j,tmp; for(j=1;j<n;j++){ tmp=x[j]; MOVE++; for(i=j-1;i>=0;i--){ COMP++; if(x[i]>tmp){ x[i+1]=x[i]; MOVE++;} else break; } x[i+1]=tmp; MOVE++; } return ; } void MergeSort(int x[], int min, int max, int tmp[]) { int data[N]={3,2,8,5,1,6,4}; int temp[N]; int i; printf("\n並べ替え前\n"); for(i=0;i<N;i++)printf("%d\t",data[i]); printf("\n"); COMP=MOVE=0; MergeSort(data,0,N-1,tmp); printf("\n比較%d回、移動%d回\n",COMP,MOVE); printf("\n並べ替え後\n"); for(i=0;i<N;i++)printf("%d\t",data[i]); printf("\n");