Notas de estudo de estrutura de dados (1. Conhecimento básico e complexidade de tempo e espaço)

A estrutura de dados é uma forma de armazenamento e organização de dados em um computador. Refere-se a uma coleção de elementos de dados que possuem uma ou mais relações específicas entre si.
Um algoritmo é um processo de cálculo bem definido. Ele pega um ou um conjunto de valores como entrada e produz um ou um conjunto de valores como saída. Em termos simples, um algoritmo é uma série de etapas de cálculo usadas para converter dados de entrada em resultados de saída. .
Eficiência do
algoritmo A análise da eficiência do algoritmo é dividida em dois tipos: o primeiro é a eficiência do tempo e o segundo é a eficiência do espaço. A eficiência do tempo é chamada de complexidade do tempo e a eficiência do espaço é chamada de complexidade do espaço. A complexidade do tempo mede principalmente a velocidade de execução de um algoritmo, enquanto a complexidade do espaço mede principalmente o espaço extra exigido por um algoritmo. Nos primeiros dias do desenvolvimento do computador, a capacidade de armazenamento de um computador era muito pequena. Então, eu realmente me importo com a complexidade do espaço. Mas, após o rápido desenvolvimento da indústria de computadores, a capacidade de armazenamento dos computadores atingiu um nível muito alto. Portanto, não precisamos mais prestar atenção especial à complexidade espacial de um algoritmo.
1. Definição de complexidade de tempo
: Em ciência da computação, a complexidade de tempo de um algoritmo é uma função que descreve quantitativamente o tempo de execução do algoritmo. O tempo que leva para um algoritmo ser executado, teoricamente, não pode ser calculado e você só pode saber se colocar seu programa na máquina e executá-lo. Mas precisamos testar todos os algoritmos do computador? Ele pode ser testado no computador, mas é muito problemático, então o método de análise de complexidade de tempo está disponível. O tempo gasto por um algoritmo é proporcional ao número de execuções das instruções nele.O número de execuções das operações básicas no algoritmo é a complexidade de tempo do algoritmo.

Notação progressiva Big O
1. Substitua todas as constantes aditivas no tempo de execução por uma constante 1.
2. Na função de frequência de operação modificada, apenas os itens de ordem mais alta são retidos.
3. Se o termo de ordem mais alta existir e não for 1, remova a constante multiplicada por esse termo. O resultado é um grande pedido O.

Exemplo:

long Fib(size_t N) 
{
return N < 2 ? N : Fib(N-1)+Fib(N-2);
}
分析发现基本操作递归了2^N次,时间复杂度为O(2^N)。

2. Complexidade do espaço A complexidade do
espaço é uma medida da quantidade de espaço de armazenamento que um algoritmo ocupa temporariamente durante sua operação. A complexidade do espaço não é quantos bytes de espaço o programa ocupa, porque isso não faz muito sentido, portanto, a complexidade do espaço é o número de variáveis. As regras de cálculo da complexidade do espaço são basicamente semelhantes à complexidade do tempo, e a notação progressiva grande O também é usada.
exemplo:

long Fac(size_t N) 
{
 return N < 2 ? N : Fac(N-1)*N; 
 }
 分析发现递归调用了N次,开辟了N个栈帧,每个栈帧使用了常数个空间。空间复杂度为O(N)

Acho que você gosta

Origin blog.51cto.com/14289397/2545647
Recomendado
Clasificación