Estruturas de Dados e Algoritmos (a) - complexidade de tempo e complexidade de espaço

Estruturas de Dados e Algoritmos (a) - complexidade de tempo e complexidade de espaço

Primeiro a uma alma tripla para perguntar:

1: Por que a complexidade de tempo e complexidade espaço deste material?

2, complexidade de tempo e complexidade de espaço do que coisas?

3, como determinar o tempo de uma complexidade algoritmo e complexidade espaço.

Primeiro, porque tem complexidade de tempo e complexidade espaço deste material?

Na primeira você pode não se importar sobre o problema da eficiência muitas pessoas encontram gravação direta de um algoritmo para alcançar uma cena no trabalho prático, desde que realizar a função muito bem. não vi nada na pequena quantidade de dados, o crescimento explosivo na quantidade de dados, mas quando você escreve um algoritmo ruim pode trazer um desastre para o sistema. É bom escrever um algoritmo para medir quantas pessoas vão pensar pela primeira vez, a execução rápida e legível. Poucas pessoas mencionar um outro indicador chave da província não economizar espaço. Pode-se dizer que este hardware agora também olhar para a idade de avançado contudo, esse entendimento é muito estreito. Quando o crescimento explosivo na quantidade de dados por um pequeno espaço de memória e tempo de execução de cada milissegundo, será infinitamente ampliada. Nos restrições de recursos de hardware do século passado, ainda mais, assim que os cientistas têm proposto um algoritmo para medir a complexidade de tempo e espaço complexidade do conceito.

Em segundo lugar, qual é a complexidade de tempo ea complexidade do espaço.

Quando a análise de algoritmo, o número total de execuções instruções T (n) n é uma pergunta sobre o tamanho de uma função, em seguida, analisar T (n) com N e determinar mudanças em T (n) de ordem de grandeza. A complexidade do algoritmo, o algoritmo é uma medida de tempo, denotado por: T (n) = O (f (n)). N representa um problema que aumenta com o tamanho, o tempo de execução do algoritmo é as mesmas taxas de crescimento e f (n) o crescimento, chamado assintótica complexidade do algoritmo, referido como tempo de complexidade. Onde f (n) é uma função do tamanho do problema n. O maiúsculo () para refletir a complexidade de tempo da notação algoritmo, que nós chamamos a notação O grande. Em geral, à medida que n aumenta o tamanho da entrada, T (n) é o algoritmo algoritmo mais lento o crescimento óptimo.

complexidade de espaço do espaço de armazenamento requerido por um algoritmo de cálculo aplicado, a complexidade espaço do algoritmo referido como a fórmula: S (n) = O (f (n)), em que, n-escala do problema é, f (n ) como uma função da declaração n ocuparam espaço de armazenamento. Em geral, estamos usando "complexidade de tempo" para se referir às necessidades de tempo de execução, é usar "complexidade espaço" refere-se aos requisitos de espaço.

Sobre a complexidade de tempo do algoritmo e da complexidade da fórmula para a derivação de espaço mais complexo, os estudantes interessados ​​podem ir ao Google para Wikipedia para descobrir.

Em terceiro lugar, como determinar o tempo de uma complexidade algoritmo e complexidade espaço.

* Todos substituído por uma adição constante de uma constante de tempo de execução.

O seguinte código, nenhum ciclo de:

         int sum = 0; 
         System.out.println ( "Olá");
         System.out.println ( "Olá");
         System.out.println ( "Olá");
         System.out.println ( "Olá");
         sum = (1 + n) * n / 2;

* O número de execuções de uma função na revista, mantendo apenas o termo de ordem mais elevada.

O seguinte código, existe uma constante, há um circuito duplo, um laço é executado para N para N vezes

Os dois aninhados para é n ^ 2. , Onde o tempo é a complexidade computacional do algoritmo será a olhar para a maioria, isso é n ^ 2.

        int i, j, n = 100; 
        for (i = 0; i <n; i ++) {
            para (j = 0; j <n; j ++) {
                System.out.println ( "Olá");
           }
       }

* Se existe o termo de ordem mais elevada e não é um, o termo constante é multiplicado com a remoção.

O código seguinte: Porque quando i = 0, o laço é executado n vezes, quando i = 1, o laço é executado n-1 vezes ...... quando i = n-1, o loop interno é executado uma vez, de modo que o total de execuções deve ser:

n + (n-1) + (n-2) + ... + 1 = n (n + 1) / 2 n (n + 1) / 2 = n ^ 2/2 + n / 2 primeira ignorado, porque não há soma constante.

O segundo retenção apenas o item mais alto, de modo a n / 2 este removido.

Em terceiro lugar, a remoção da maior e multiplicado por um termo constante, para se obter o ó final (n ^ 2).

        int i, j, n = 100; 
        for (i = 0; i <n; i ++)
       {
            para (j = i; j <n; j ++)
           {
                 System.out.println ( "Olá");
           }
       }

* O resultado final é o grande O-fim.

Postou uma foto dela:

659

eficiência FIG correspondente linear:

603

Típicos vezes a complexidade do tempo gasto em ordem ascendente é: O (1) <O (log n) <(n) <O (nlogn) <O (n ^ 2) <O (n ^ 3) <O ( 2 ^ n) <O (n!) <O (n ^ n)

Em geral, estamos usando "complexidade de tempo" para se referir às necessidades de tempo de execução, é usar "complexidade espaço" refere-se aos requisitos de espaço. Quando procuramos fazer "complexidade" direta geralmente se refere à complexidade de tempo.

Apressar o julgamento sobre isso, olhar para o tempo e espaço que você escreve a complexidade do algoritmo. Aqui estão um par de estruturas de dados e algoritmos são um bom lugar para a prática, presumivelmente a maioria dos estudantes têm utilizado, isto é,

[Leecode] https://leetcode.com/

No exemplo acima respondeu a cada período de perguntas submetidas lá, a avaliação de uma complexidade de tempo e espaço seu algoritmos de feedback, grande, este tempo é:

image-20200320194830953

Apressar para tentar.

Acho que você gosta

Origin blog.51cto.com/14745357/2480558
Recomendado
Clasificación