【发布时间】:2011-01-17 20:50:42
【问题描述】:
有没有办法将两个给定的列表合并(没有欺骗的联合)为一个,并使用 ONE for 循环以排序方式存储项目?
另外,我正在寻找一种不使用 API 方法(如联合、排序等)的解决方案。
示例代码。
private static void MergeAndOrder()
{
var listOne = new List<int> {3, 4, 1, 2, 7, 6, 9, 11};
var listTwo = new List<int> {1, 7, 8, 3, 5, 10, 15, 12};
//Without Using C# helper methods...
//ToDo.............................
//Using C# APi.
var expectedResult = listOne.Union(listTwo).ToList();
expectedResult.Sort();//Output: 1,2,3,4,5,6,7,8,9,10,11,12,15
//I need the same result without using API methods, and that too by iterating over items only once.
}
PS:我在一次采访中被问到这个问题,但还没有找到答案。
【问题讨论】:
-
如果您不能使用 API 方法,您将如何以任何方式访问或操作列表?
-
我怀疑OP的意思是不使用Union、Sort等方法来执行合并排序的核心操作。
-
两个列表都已排序的前提条件?您说“一个循环”,所以我假设您的意思是整个操作的 O(n)。如果它们都没有排序,我不确定这是可能的。
-
@Jonanthon,两个列表都未排序。
-
不要因为不知道这个问题的答案而沮丧;除非您正在面试编写专门的排序算法的工作,否则询问您在解决实际问题方面的能力是一个特别不相关的问题。