C에서 재귀 병합 정렬 알고리즘을 프로그래밍했습니다. 그러나 작동하지 않습니다. 재귀 병합 정렬이 작동하지 않습니다.
void mearge(int a[],int elementsOfA,int b[],int elementsOfB,int c[]){
int elementsOfC = elementsOfB + elementsOfA;
int i=0,j=0,k=0;
while(k<elementsOfC){
if(a[i]<=b[j] || j==elementsOfB) {
c[k]=a[i];
i++;
k++;
}
if(b[j]<a[i] || i==elementsOfA) {
c[k]=b[j];
j++;
k++;
}
}
}
void meargeSort(int a[], int indexOfLeft, int positionOfRight, int b[]){
if(positionOfRight-indexOfLeft==1){
b[0]=a[indexOfLeft];
}
if(positionOfRight-indexOfLeft>1){
int mid = (positionOfRight+indexOfLeft)/2;
//int left[mid-1],right[positionOfRight-mid];
int left[mid],right[positionOfRight-mid];
meargeSort(a,indexOfLeft,mid,left);
meargeSort(a,mid,positionOfRight,right);
mearge(left,mid-indexOfLeft,right,positionOfRight-mid,b);
}
}
여기 내 주요 기능입니다 :
#include <stdio.h>
이 내 알고리즘입니다. 나는 algotithm에 두 개의 서로 다른 입력을 제공하고있다 :
- 먼저 배열입니다. 두 경우 모두
, 출력은 원하는 포함해야
int main(int argc, char **argv)
{
int i, arr[]={5,42,31,1,-1,23,0}, brr[7];
meargeSort(arr,0,7,brr);
//int i, brr[]={-1,23,0},brr[3];
//meargeSort(arr,0,3,brr);
for(i=0;i<7;i++)
printf("%d ",brr[i]);
return 0;
}
질문과 같은 부적절한 일종이다 행동, 특정 문제 또는 오류 및 질문 자체에서 그것을 재현하는 데 필요한 가장 짧은 코드. 분명한 문제 성명이없는 질문은 다른 독자에게 유용하지 않습니다. See : 최소한의 완전하고 검증 가능한 예제를 만드는 방법. – LPs
merge_sort() 함수에서 왼쪽 []/오른쪽 [] 배열을 채워야합니다. – Matthew