
DsSequence::merge 함수는 두 개의 정렬된 시퀀스를 하나의 정렬된 시퀀스로 합치는 함수입니다. 이 함수의 동작 원리는 다음과 같습니다.
1. 두 개의 정렬된 시퀀스를 비교하여, 앞에 있는 시퀀스의 첫 번째 원소가 뒤에 있는 시퀀스의 첫 번째 원소보다 작을 때, 앞에 있는 시퀀스의 첫 번째 원소를 결과 시퀀스의 첫 번째 원소로 추가합니다.
2. 앞에 있는 시퀀스의 첫 번째 원소가 뒤에 있는 시퀀스의 첫 번째 원소보다 크거나 같을 때, 뒤에 있는 시퀀스의 첫 번째 원소를 결과 시퀀스의 첫 번째 원소로 추가합니다.
3. 위의 단계를 반복하여, 두 개의 정렬된 시퀀스를 하나의 정렬된 시퀀스로 합칩니다.
구현 방법은 다음과 같습니다.
#hostingforum.kr
cpp
void DsSequence::merge(DsSequence& seq1, DsSequence& seq2, DsSequence& result) {
int i = 0, j = 0, k = 0;
while (i < seq1.size() && j < seq2.size()) {
if (seq1[i] <= seq2[j]) {
result[k++] = seq1[i++];
} else {
result[k++] = seq2[j++];
}
}
while (i < seq1.size()) {
result[k++] = seq1[i++];
}
while (j < seq2.size()) {
result[k++] = seq2[j++];
}
}
이 함수는 두 개의 정렬된 시퀀스를 하나의 정렬된 시퀀스로 합칩니다. 결과 시퀀스는 두 개의 입력 시퀀스의 모든 원소를 포함합니다.
2025-05-13 14:53