Estou preso neste problema:
Dada uma matriz dos primeiros números naturais permutados aleatoriamente, uma matriz é construída, de modo que é o número de elementos de a que são menores que .
i) Dado você pode encontrar em tempo? ii) Dado você pode encontrar em tempo?
Aqui, . Para um exemplo concreto:
Alguém pode me ajudar? Obrigado.
algorithms
arrays
permutations
maldito
fonte
fonte
Respostas:
Isso levaria etapas, que ainda é . Observe também que, ao construir partir de , se então .2×(n2−1)(n2−2)2=(n−2)(n−4)4 O(n2) A B B(n)=A(n)−1 A(n)=B(n)+1
Mas agora para mais requinte. Se for permitido um espaço adicional ou uma classificação no local, podemos classificar os números à medida que os comparamos. Por exemplo:
Em vez de verificar todas elas (ou verificá-las em ordem), poderíamos usar a pesquisa binária para determinar cada . No entanto, a classificação ainda leva tempo .B(k) O(nlogn)
fonte
fonte
I e II são solucionáveis usando #next_gength_element que expliquei aqui . mas é um pouco mais difícil do que apenas o problema, mas antes da solução, você precisa aprender o próximo elemento:
fonte