입력 리스트가 이미 소트되어 있다는 것을 전제로 하고, 다음과 같이 병합 재정렬할 수 있다.
public List<int> MergeList(List<int> list1, List<int> list2) { List<int> result = new List<int>(); var enum1 = list1.GetEnumerator(); var enum2 = list2.GetEnumerator(); bool exists1 = enum1.MoveNext(); bool exists2 = enum2.MoveNext(); while (exists1 || exists2) { if (exists1 && exists2) { if (enum1.Current < enum2.Current) { result.Add(enum1.Current); exists1 = enum1.MoveNext(); } else { result.Add(enum2.Current); exists2 = enum2.MoveNext(); } } else if (exists1) { for (; exists1; exists1 = enum1.MoveNext()) { result.Add(enum1.Current); } } else { for (; exists2; exists2 = enum1.MoveNext()) { result.Add(enum1.Current); } } } return result; }