mergesort 알고리즘을 구현하려고하는데이 오류를 이해하지 못합니다.
error : 'int *'유형의 rvalue에서 'int * &'유형의 상수가 아닌 참조를 잘못 초기화했습니다.
Mergesort (v, 0, TAM-1);
___________________ ^참고 : 'void Mergesort (int * &, int, int)'의 인수 1 초기화
void Mergesort (int * & v, int ini, int fin);
^
내 코드의 관련 부분 :
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
void Mergesort (int *&v, int ini, int fin);
void Fusion (int *&v, int ini, int centro, int fin);
int main(){
const int TAM = 20;
int v[TAM];
time_t t;
srand ((int) time(&t));
const int MIN = -100, MAX=100, NUM_VALORES = MAX-MIN+1;
for (int i = 0; i < TAM; i++){
v[i] = (rand() % NUM_VALORES) + MIN;
}
...
Mergesort (v, 0, TAM - 1);
...
return 0;
}
void Mergesort (int *&v, int ini, int fin){
int centro;
if (ini < fin){
centro = (ini + fin) / 2;
Mergesort (v, ini, centro);
Mergesort (v, centro + 1, fin);
Fusion (v, ini, centro, fin);
}
}
void Fusion (int *&v, int ini, int centro, int fin){
int aux[fin - ini + 1];
int h, i, j, k;
h = ini;
i = ini;
j = centro + 1;
while ( (i <= centro) && (j <= fin) ){
if (v[i] <= v[j]){
aux[h] = v[i];
i++;
}else{
aux[h] = v[j];
j++;
}
h++;
}
if (i > centro){
for (k = j; k <= fin; k++){
aux[h] = v[k];
h++;
}
}else{
for (k = i; k <= centro; k++){
aux[h] = v[k];
h++;
}
}
for (k = ini; k <= fin; k++){
v[k] = aux[k];
}
}
이 사이트에 유사한 오류에 대한 질문이 있다는 것을 알고 있지만 문제를 해결할 수 없습니다.
Mergesort (int * &, int, int)에서 * &를 *로 바꾸어 Mergesort (int *, int, int)로 만들었습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다