我写了一个简单的程序,在O(n)中排序.它的内存效率很低,但这不是重点.
它使用了背后的原理HashMap进行排序:
public class NLogNBreak {
public static class LinkedListBack {
public LinkedListBack(int val){
first = new Node();
first.val = val;
}
public Node first = null;
public void insert(int i){
Node n = new Node();
n.val = i;
n.next = first;
first = n;
}
}
private static class Node {
public Node next = null;
public int val;
}
//max > in[i] > 0
public static LinkedListBack[] sorted(int[] in, int max){
LinkedListBack[] ar = new LinkedListBack[max …Run Code Online (Sandbox Code Playgroud) 我被要求提出尽可能多的解决方案来解决以下问题:
编写一个函数,它接受两个数字列表(假设都按升序排列)并将它们合并为一个列表(也按升序排列).
我的第一个解决方案是append list1进入list2然后再进行sort.
然后我发现了一个内置的merge.
然后我决定自己实际实现一个解决方案,并且我想出了一个尾递归函数,目前只适用于列表的子集.
这个问题本身似乎也许我终于有理由阅读Knuth了,但是由于下雪,Uni和图书馆都关闭了.
所以我转向你,对这个问题有什么有趣的,有效的或反模式的方法?
PS我不是在寻找实现,除非这是展示这个想法的最佳方式.我只是想看看人们是如何处理这类问题的.