다음은 Robert Lafore가 작성한 "데이터 구조 & 알고리즘"에서 발췌 한 것입니다. 배열에 항목을 삽입하려고하는 정렬 된 배열로 작업하고 있습니다. 나는 보통 코드를 이해하는 동안 코드를 이해하지만,이 코드는 나를 벗어나는 것처럼 보인다. 전반부가 무엇을하는지 이해합니다. 값을 넣을 위치를 검색합니다.정렬 된 배열 삽입
이제는 (int k = nElems; k> j; k--)에서 시작하는 두 번째 부분이 멈추는 곳입니다. 이것이 내가 말하고자하는 바라고 생각합니다. k를 원래 배열의 크기와 같게 설정하고 k가 크기 j가 될 때까지 감소시킵니다. 배열 위치 k를 k-1 (또는 아마도 j-1?)과 같게 설정하면 ... 그러면 [j] = 값;에 걸릴 것입니다.
누군가가 설명 할 수 있습니까? 일단 배열이 생성되면 불변이라고 생각했습니다. 새로운 배열이 만들어 질 것이라고 생각합니다.
public void insert(long value) // put element into array
{
int j;
for(j=0; j<nElems; j++) // find where it goes
if(a[j] > value) // (linear search)
break;
for(int k=nElems; k>j; k--) // move bigger ones up
a[k] = a[k-1];
a[j] = value; // insert it
nElems++; // increment size
}
고맙습니다. 전체 코드를 고려하기 만하면됩니다. 이전에 "최대"배열 크기가 생성되었습니다. 다시 한 번 감사드립니다. –