나는이 작업 병합 정렬 알고리즘을 C로 가지고 있습니다. 그러나 정수에서만 작동합니다. int를 char로 변경하려고하면 segfault가 발생합니다. 나는이 코드를 변경해야합니다 당신이 좀 도와 주시겠습니까 문자열 C에서 문자 정렬 병합
, 그래서 나는 다음과 같이 머지 소트를 사용할 수 있습니다 내가char*str = "test_string";
MergeSort(str, 0, strlen(str)-1);
void Merge(int *array, int left, int mid, int right){
int tempArray[right-left+1];
int pos=0,lpos = left,rpos = mid + 1;
while(lpos <= mid && rpos <= right){
if(array[lpos] <= array[rpos]){
tempArray[pos++] = array[lpos++];
}
else{
tempArray[pos++] = array[rpos++];
}
}
while(lpos <= mid) tempArray[pos++] = array[lpos++];
while(rpos <= right)tempArray[pos++] = array[rpos++];
int iter;
for(iter = 0;iter < pos; iter++){
array[iter+left] = tempArray[iter];
}
return;
}
void MergeSort(int *array, int left, int right){
int mid = (left+right)/2;
if(left<right){
MergeSort(array,left,mid);
MergeSort(array,mid+1,right);
Merge(array,left,mid,right);
}
return;
}
을 잃었어요합니다. 감사!
안녕하세요 : 당신이 엄격하게 C를 사용하지 않는 경우
int
및char
작동 기능을 만들기 위해 C++ 템플릿을 사용할 수 있습니다. 코드에서 오류를 발견하도록 사람들에게 요청하는 것은 특히 생산적이지 않습니다. 디버거를 사용하거나 인쇄 문을 추가하여 프로그램의 진행 상황을 추적하고 발생할 것으로 예상되는 것과 비교하여 문제를 격리해야합니다. 이 둘이 갈라지면 문제를 발견했습니다. (그리고 필요한 경우, [최소 테스트 케이스] (http://sscce.org)를 구성해야합니다.) –