Quais são as regras para a barreira “n (n log n)” para algoritmos de classificação?

Eu escrevi um programa simples que classifica em O (n). É altamente ineficiente de memória, mas esse não é o ponto.

Utiliza o princípio por trás de umHashMap para classificação:

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 + 1];
        for (int i = 0; i < in.length; i++) {
            int val = in[i];
            if(ar[val] == null){
                ar[val] = new LinkedListBack(val);
            } else {
                ar[val].insert(val);
            }
        }
        return ar;
    }
}

Então isso conta como uma espécie de O (n), mesmo que retorne o resultado em um formato descolad

questionAnswers(2)

yourAnswerToTheQuestion