이전에 보지 못했던 오류가 발생했습니다. 사물에 대한 참조가 모호합니다.C++ 삽입 정렬 중앙값 계산 오류
저는 실행중인 중간 값을 계산하는 작은 테스트 프로그램을 작성하고 있습니다. 목록이 커지면 중간 값이 다시 계산됩니다. 이 경우 중간 값은 목록의 가운데 번호 (또는 상단 중간)를 의미합니다. 따라서 7의 중앙값은 7이고 7과 9의 중앙값은 9이며 7 3과 9의 중앙값은 7입니다.
두 개의 동적 배열을 사용하여이 작업을 수행하고 있습니다. 처음에는 첫 번째 값이 중간 값으로 설정되고 입력 된 각 숫자는 현재 중간 값과 비교됩니다. 중간 값은 두 배열 사이의 중간 요소를 계산할 때 얻습니다.
왼쪽 배열은 중앙값보다 작은 값이고 오른쪽 배열은 모두 큰 배열입니다. 각 배열의 숫자를 정렬하기 위해 삽입 정렬을 사용합니다 (거의 정렬 된 목록에서 좋습니다).
내가 얻는 오류를 이해하지 못하거나 내가 잘못한 부분을 이해하지 못했습니다. 나는 C++을 처음 접했을 뿐이므로이 문제에 대한보다 간단한 접근법을 선택했다.
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<int> left;
vector<int> right;
int leftCount = 0;
int rightCount = 0;
void leftInsertionSort(int);
void rightInsertionSort(int);
void inputNumber(int, int);
int main(int argc, char** argv) {
int length = 0;
int value;
int median;
string input;
while (cin >> input) {
value = atoi(input.c_str());
inputNumber(value, median);
if (leftCount > rightCount) {
median = (((leftCount + rightCount)/2) + 1);
cout << left[median];
} else {
median = (((leftCount + rightCount)/2) + 1) - leftCount;
cout << right[median];
}
}
return 0;
}
void inputNumber(int value, int median) {
if (leftCount == 0 && rightCount == 0) {
left[0] = value;
median = value;
leftCount++;
} else
if (leftCount == 1 && rightCount == 0) {
right[0] = value;
if (left[0] > right[0]) {
right[0] = left[0];
left[0] = value;
}
median = right[0];
rightCount++;
} else
if (value < median) {
left[leftCount] = value;
} else {
right[rightCount] = value;
}
}
void leftInsertionSort(int lLength)
{
leftCount++;
int key, i;
for(int j = 1; j < lLength; j++)
{
key = left[j];
i = j - 1;
while (left[i] > key && i >= 0) {
left[i+1] = left[i];
i--;
}
left[i+1] = key;
}
}
void rightInsertionSort(int rLength)
{
rightCount++;
int key, i;
for(int j = 1; j < rLength; j++)
{
key = right[j];
i = j - 1;
while (right[i] > key && i >= 0) {
right[i+1] = right[i];
i--;
}
right[i+1] = key;
}
}
내가 받고있는 것으로 보인다 오류는 '오류 : 참조'는 남아가 컴파일 할 때 내가 얻을 컴파일러 오류를 판단
그리고 무엇이 오류입니까? –
오류 : 'left'에 대한 참조가 모호합니다. – Edge
나는 똑같이됩니다. – Edge