나는 프로그램하는 법을 배우고 있으며, C++이 제 첫 번째 언어입니다. 나에게 보여주기 위해 포인터를 사용하여 귀찮게하지 마라. 나는 아직 그들을 이해하지 못하고, 이것에 바칠 시간이 없을 때까지 귀찮게하지 않을 것이다. 알고리즘은 설명이 아니라 구현, 병합 정렬 알고리즘을 -초기화 후 C++ 배열의 크기를 조정할 수 있습니까?
int mergeSort()
{
const int n = 9;
int originalarray[n] = {1, 3, 5, 7, 9, 2, 4, 6, 8};
const int halfelements = (sizeof(originalarray)/sizeof(int))/2;
int farray[halfelements];
int sarray[halfelements];
for (int i = 0; i < halfelements; i++) {
farray[i] = originalarray[i];
}
for (int i = halfelements, x = 0; i < (halfelements * 2); i++, x++) {
sarray[x] = originalarray[i];
}
은 나는 (몇 친구들이 저를 돕는 학습 나는 수업을하고 있지 않다)가 할당되었다. 이것을 다시 작성하여 홀수 및 짝수 모두에서 작동합니다. 나는이 코드를 추가하려고 시도했다 :
if ((n % 2) != 0) int farray[halfelements + 1];
그래서 같은 정수를 사용하여 두 개의 후속 어레이에서 반복 할 수 있었다. sizeof (farray)는 16 바이트 또는 4 정수로 표시됩니다. 따라서 크기가 조정되지 않습니다. 내가 알고 싶은 것 - 배열을 초기화 한 후에 크기를 조정할 수 있습니까?
편집 : 벡터를 구현하려면 어떻게해야합니까? 루프를 반복하여 값을 복사하고 복사하는 반복기를 사용하는 방법을 이해할 수 없습니다.
좋습니다, 감사합니다. 나는이 알고리즘에 std :: vector를 구현하는 방법을 알아 냈다.내가 두 시간 동안 내 코드를 디버깅하는 데 쓰지 않았 으면 좋겠지 만 "int mergeSort (std :: vector, int)"함수에 ""=/ –
jkeys
이 누락되었습니다. 동적 배열에 의해 어쨌든? 배열이나 벡터의 크기를 동적으로 조정하면 똑같은 성능 저하가 야기됩니다.> – Jason